c语言中,scanf语句里面什么时候要加&,什么时候不要加&?

2024-11-03 14:44:15
推荐回答(5个)
回答1:

这里所说的其实就是一个地址

所以当变量是一个指针或者表示一个地址时就不中&

&就是求地址的运算符

如数组名是数组第一权个元素的地址

所以数组名就可以不用加&进行运算

比如

int a;

int *p=&a;

scanf("%d",p);

则不需要使用&运算符

扩展资料:

在C语言中,输入变量的语法是:scanf("格式控制","变量地址")

可以看出,第二个的格式为变量地址。

在C语言中,变量在定义之后,就会在计算机内存中非配一块空间给这个变量,该空间在内存中的地址称为变量的地址。

为了得到变量的地址,需要在变量前加一个&(称为取地址运算符),也就是“&变量名”的写法。

参考资料来源:百度百科-scanf (计算机语言函数)

回答2:

根据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;
}

回答3:

&叫取地址符,如果你本身定义的是一个指针或一维数值的话,就不用加&,定义的是一个int,char等值的话就加&。(不完全是这样)
我想你可能是看到数组没加&才提的问吧!我也只是猜想,如果是的话等你学到指针与数组的关系你应该就明白了!

回答4:

&是地址指针。例如:&0x55就是将0x55做为寄存器地址来进行访问。

回答5:

这个是地址符