为什么在C输入需要变量的内存位置而不是变量本身的名称?
有没有什么特别的原因,为什么当输入C(scanf)更喜欢取变量的内存位置而不是变量本身的名称? 我知道它的定义是什么? 但是有什么特别的原因吗? 就像在C++中,如果你想输入你会写cin >> var; 但为什么不在? 让语言更快一些吗?为什么在C输入需要变量的内存位置而不是变量本身的名称?
这是因为在C值函数是按值传递。而且,当然,作为变量的编译语言名称在运行时并不存在,这是所有内存中的地址。
如果直接传递变量,你只是传递价值,这就是printf()
需求:
int a = 32;
printf("a=%d\n", a);
,但如果你做同样的用的scanf()`是变化的来电者的变量的值,你传递变量的地址:
int a = 32;
scanf("%d", &a);
内。然后scanf()
代码可以写在一个新的整数值给定地址,导致值在a
中更改。
您需要通过引用传递的变量的scanf(),以使scanf()函数可以写在该地址的数据..
-1,'scanf()'当然不会“将地址写入提供的指针”。 – unwind
Ohhh ..我的头脑去了一些其他的宇宙一段时间。 – user2407394
欢迎回来。 Downvote删除。 :) – unwind
由于C通过拷贝传递参数,而不使用指针,因此它不能修改对象。 – ouah