为什么在C输入中需要变量的内存位置而不是变量本身的名称?

时间:2013-06-22 12:30:44

标签: c variables memory location scanf

有什么特别的原因,为什么在输入C(scanf)时更喜欢采用变量的内存位置而不是变量本身的名称? 我知道上面强制要求的scanf的定义? 但有什么特别的理由吗? 就像在c ++中一样,如果你想输入,你会写cin>> var; 但为什么不呢? 是否能让语言更快?

2 个答案:

答案 0 :(得分:5)

这是因为C中函数的值是按值传递 。当然,作为变量的编译语言名称不会在运行时存在,它在那时就是内存中的所有地址。

如果直接传递变量,只需传递printf()需要的值:

int a = 32;
printf("a=%d\n", a);

但如果您对scanf()', it would just get the integer value执行相同操作32 , with no idea where it came from. Since the point of scanf()`是更改调用者变量的值,则传递地址变量:

int a = 32;
scanf("%d", &a);

然后scanf()内的代码可以在给定的地址处写入一个新的整数值,这会导致值在a中更改。

答案 1 :(得分:1)

您需要通过引用scanf()传递变量,以便scanf()可以在该地址写入数据。