这里所说的其实就是一个地址
所以当变量是一个指针或者表示一个地址时就不中&
&就是求地址的运算符
如数组名是数组第一权个元素的地址
所以数组名就可以不用加&进行运算
比如
int a;
int *p=&a;
scanf("%d",p);
则不需要使用&运算符
扩展资料:
在C语言中,输入变量的语法是:scanf("格式控制","变量地址")
可以看出,第二个的格式为变量地址。
在C语言中,变量在定义之后,就会在计算机内存中非配一块空间给这个变量,该空间在内存中的地址称为变量的地址。
为了得到变量的地址,需要在变量前加一个&(称为取地址运算符),也就是“&变量名”的写法。
参考资料来源:百度百科-scanf (计算机语言函数)
根据scanf函数的定义,其接收元素必须是类型与控制字符串元素对应的变量的地址。&是取地址操作符,当接收元素不是地址时要用&获得变量的地址,当接收元素已经是地址时就不用&了。如:
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void){
int x;
char a[10];
scanf("%d%s",&x,a);//x前要加&,因为x不是地址,a前不加,因为数组名就是地址
printf("%d %s\n",x,a);
return 0;
}
&叫取地址符,如果你本身定义的是一个指针或一维数值的话,就不用加&,定义的是一个int,char等值的话就加&。(不完全是这样)
我想你可能是看到数组没加&才提的问吧!我也只是猜想,如果是的话等你学到指针与数组的关系你应该就明白了!
&是地址指针。例如:&0x55就是将0x55做为寄存器地址来进行访问。
这个是地址符