我如何将指针传递给局部变量?

问题描述 投票:0回答:1

我在传递指向局部变量的指针时遇到一些麻烦。当我尝试在printf中打印main()语句时,每次都会获得随机数。但是当我从parse函数打印它时,它可以正常工作。我尝试过使用指针,但无法弄清楚。

#include <stdio.h>
#include <stdlib.h>


void parse(char record[], int *acct, float *amnt){
            char word1[10], word2[10];
            sscanf(record, "%s %s", word1, word2);

            acct = (int*) malloc(10);
            amnt = (float*) malloc(10);

            *acct = atoi(word1);
            *amnt = atof(word2);

            printf("%d, %.1f\n", *acct, *amnt);
}

int main(){
            FILE *p = fopen("accounts.ssv", "rt");
            char record[20];
            int acct;
            float amnt;

            while (fgets(record, 20, p)){
                    parse(record, &acct, &amnt);
                    printf("%d, %.1f\n", acct, amnt);
            }

            fclose(p);
            return 0;
}

accounts.ssv

20 -50.5
10 60.5
20 30.0
c pass-by-reference
1个回答
0
投票

您正在传递指向main()的acctamnt的指针,但是malloc调用将这些指针替换为指向新分配的内存的指针。

这些行:

   *acct = atoi(word1);
   *amnt = atof(word2);

写入新分配的内存,而不是main()中的变量。]​​>

尝试删除两个malloc调用,atoi / atof函数会将其结果存储在main()变量中。

© www.soinside.com 2019 - 2024. All rights reserved.