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

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等同效果。
温馨提示:内容为网友见解,仅供参考
第1个回答  2006-06-12
答案为A 因为scanf()中的第二个参数就是要输入的那个数的地址,由于有*pa=&a,所以,pa就是a的内存地址了,所以选A 它等于scanf("%d",&a);
第2个回答  2020-04-28
pa是指针,*pa=&a把a的地址赋值给pa,所以pa就是地址,不用加取地址符号
谢谢采纳
第3个回答  2020-02-05
楼主,指针的概念是指向一段地址,再看sacnf("%d",&a),中a也是要取a的地址,如果你要加*那就是解析那个指针了。
第4个回答  2006-06-12
答案当然是A
函数名称: scanf

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

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

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

函数说明: args 为指针.

设有定义:int a,*pa=&a;以下scanf语句中能正确为变量a读入数据的是:
定义的时候就已经说了pa是指针变量了啊,同时赋予了整型变量a的地址的值。在scanf语句中,pa所代表的就是等同与&a的一个地址数值。计算机靠这个地址的值找到要存储的位置。B.很明显就错了啊,scanf("%d",a); 这个位置中,a处要填的是地址的值,a只是一个变量名。C.&pa根本就不代表什么,在定...

几道C语言指针方面的问题
1. int *a;表示声明一个指针变量a,注意a的值是个地址,不是值,这样才表示一个值(前提是a确实指向一个值,不然的话,会是一个随机数):*a,int a=10,*b=&a;表示的是把a的地址给指针变量b。2.B,其中D是错的,因为楼主只是声明一个指针变量,你没有初始化,也就是没有分配内存,要是...

指针的一个问题,求详解
int a,*pa=&a; 这是声明。声明里 *pa 是指针。声明 int 型 变量 a。声明 int 型 指针 pa, 并初始化 -- 让它指向 变量 a 的地址。scanf(...) ; 是 语句。语句里 *pa 是指针 指向的 值。语句里 pa 是指针 指向的 地址。语句里 a 是变量a 的 值。语句里 &a 是变...

相似回答