0

有什么特别的原因为什么在输入 C (scanf) 时更喜欢使用变量的内存位置而不是变量本身的名称?我知道上面规定的 scanf 的定义吗?但是有什么特别的原因吗?就像在 c++ 中一样,如果你想接受输入,你会写 cin>>var; 但是为什么不在呢?保持语言速度更快吗?

4

2 回答 2

5

这是因为 C 中函数的值是通过value传递的。而且,当然,作为一种编译语言,变量的名称在运行时不存在,那时它都是内存中的地址。

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

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

但是如果你用scanf()', it would just get the integer value32 , with no idea where it came from. Since the point ofscanf()` 做同样的事情是改变调用者变量的值,你传递变量的地址:

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

然后里面的代码scanf()可以在给定的地址写入一个新的整数值,这会导致该值在a.

于 2013-06-22T12:33:35.610 回答
1

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

于 2013-06-22T12:32:54.093 回答