C语言中scanf后面,什么情况下不加符号&

新手初学C
在数组和指针中如何使用 scanf有点疑惑,scanf("%d",);括号的逗号后面什么时候加&什么时候不加&呢??
请高手详解,最好举点简单的例子,越多越好

谢谢啦!!

  首先要先认识scanf()函数:
  函数原型:int scanf(char *format[,argument,...]);
  函数说明:scanf()函数是通用 终端 格式化 输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何 固有类型的 数据并自动把数值 变换 成适当的 机内格式。
  调用格式为:scanf("<格式化字符串>",<地址表>);
  函数返回值:scanf()函数操作成功时,返回成功赋值的数据项数,出错时则返回EOF。
  格式化字串一般包括 : %s(字符串) %c(单字符) %d(整数) %lf(double) %f(float) ,
  后面的argument一定要是地址类型变量,当变量名就是对应的指针变量时,就不需要加&符号了。 &是地址运算符,意思是获得变量的地址。如:
  char str[100];
  int i;
  scanf("%s", str ); //str本身就是地址,所以,不需要加&
  scanf("%d", &i ); //i不是指针变量,必须要加地址
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-03
scanf("",&a);双引号里面是格式模式,就是说你要输入的数字或字符等格式,然后是存放到a里面,这里的&是取地址符号,指针说白了也是地址,还有数组名也是地址,所以只要是地址的都不用加&,其他的要加,你可以多去看点代码,自然而然你就会懂得了。
第2个回答  推荐于2017-09-06
看你是输入什么。。
大多数就是一般变量,,还有就是指针。。
变量要加:
如int i;
scanf("%d",&i);
一级指针不加(不用考虑二级指针和多级指针的。基本没有这么用的):
char * str;
scanf("%s",str);本回答被提问者采纳
第3个回答  2011-05-03
你知道 & 表示的是取址符,也就是地址的。。你定义的变量不是地址的,,这个时候如果要给变量赋值的话,就需要加上&符号的。但是如果你把你的变量的地址赋给一个指针的话,就不会出现这样的。就可以不需要加上&符号的。。
第4个回答  2011-05-03
变量要加,数组名或指针不加。
int x,a[ ];int *p;
x为变量,&x指x的地址,a也是指数组a的地址,p是指针p的地址
相似回答