万誉会会员:设有定义:int a,*pa=&a;以下scanf语句中能正确为变量a读入数据的是:

来源:百度文库 编辑:神马品牌网 时间:2024/05/01 22:10:40
A scanf("%d",pa);
B scanf("%d",a);
C scanf("%d",&pa);
D scanf("%d",*pa);

答案竟然是A,请解释下,为什么不是B呢?或则是C|D呢饿

定义的时候就已经说了pa是指针变量了啊,同时赋予了整型变量a的地址的值。在scanf语句中,pa所代表的就是等同与&a的一个地址数值。计算机靠这个地址的值找到要存储的位置。
B.很明显就错了啊,scanf("%d",a); 这个位置中,a处要填的是地址的值,a只是一个变量名。
C.&pa根本就不代表什么,在定义里,要写*pa才代表pa这个变量是指针变量,而在语句中,只要写pa就代表指针了,写成*pa反而代表的是那个地址所存储的内容。
D.跟B等同效果。

答案为A 因为scanf()中的第二个参数就是要输入的那个数的地址,由于有*pa=&a,所以,pa就是a的内存地址了,所以选A 它等于scanf("%d",&a);

答案当然是A
函数名称: scanf

函数原型: int scanf(char * format,args,...);

函数功能: 从标准输入设备按format指向的格式字符串规定的格式,输入数据给agrs所指向的单元.

函数返回: 读入并赋给args的数据个数.遇文件结束返回EOF,出错返回0.

函数说明: args 为指针.

scanf函数后面跟的必须是地址或者指针