c语言中输入函数scanf(“%d”,&a)中的&作用是取地址,那么如果删去呢?是必须要加&吗

c语言中输入函数scanf(“%d”,&a)中的&作用是取地址,那么如果删去呢?是必须要加&吗我刚才做一个程序,把&地址删掉照样运行得出了答案,那么&到底是有什么作用呢

int main()
{
int a;
scanf("%d",a);  //你确定这样写不报错?
printf("\n%d",a);
return 0;
}

加不加&是由前面的函数定的,  scanf("<格式化字符串>",<地址表>); 第二个参数要求是地址, 所以要加&取地址符, 如果你定义的变量是指针类型, 就不用加&

追问

额谢谢懂了,不过我用dev编的好像是没有报错啊

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-11-30
不报错是因为dev编译器自动将整形变量识别为地址,因为都是占用四个字节,编译器不同,识别的严格程度不一样
相似回答