# include <stdio.h>
int main(void)
{
int a;
scanf("%d", &a);
printf("a=%d", a);
return 0;
}
为什么不是
# include <stdio.h>
int main(void)
{
int a;
scanf("%d", a);
printf("a=%d", a);
return 0;
}
为什么要用&,直接用变量名不是更直接?
因为scanf这个函数要求的参数传递的是地址!!
函数原型:
int scanf(const char *format,...);其调用形式为:
scanf("<格式说明字符串>",<变量地址>);变量地址要求有效,并且与格式说明的次序一致。
追问我知道需要传递地址,但是不明白的是:根据变量名不就可以找到内存地址吗,为什么不用变量名而用变量地址,
追答这些基本类型,变量名传递过去的是当前变量的一个拷贝,在函数中对这些变量进行改变是不影响函数外这些变量的值的,为了得到结果并影响到这些变量,只有传递地址,或者对地址的引用。
本回答被提问者和网友采纳