c语言取地址符有什么用,为什么scanf一定要用&

如题所述

取地址 就是把变量转为指针, 起到传地址调用函数的效果.
而C语言中函数传参有两种,传值调用 和传指针调用.
传值调用时, 被调函数中改变参数值不会影响主函数.
只有传指针调用, 才可以将参数值回传给主函数.
scanf中要根据输入对参数赋值, 所以 必须传指针调用.
温馨提示:内容为网友见解,仅供参考
第1个回答  2017-12-11

取地址符的作用是告诉系统定义的变量的值存放在内存空间的地址,scanf函数就根据这个地址值寻址,然后从这个地址空间中取出我需要的数据值,对于变量来说,只能通过&a的方式获取到该变量在内存中的地址,对于指针变量和数组,就不需要这个取地址符了。代码说明如下:

//变量
int a;
scanf("%d",&a);
//指针
int a,*p;
p=&a;
scanf("%d",p);
//数组
int a[10];
for(int i=0;i<10;i++)
    scanf("%d",a+i);  //a+i<===>&a[i]

相似回答