当前位置: 代码迷 >> C语言 >> 请大家帮忙做一道C语言的选择题。我做的答案是D,标准答案却是A。
  详细解决方案

请大家帮忙做一道C语言的选择题。我做的答案是D,标准答案却是A。

热度:144   发布时间:2005-10-26 09:39:00.0
请大家帮忙做一道C语言的选择题。我做的答案是D,标准答案却是A。
设有定义:int a, *pa=&a; 以下scanf语句中能正确为变量a读入数据的是():
A)scanf("%d",pa)  ;   B)scanf("%d",a)   ;
C)scanf("%d",&pa) ;   D)scanf("%d",*pa)

我的解题过程:&a是变量a的地址,*pa是指针变量pa所指向的存储单元的内容(即pa所指向的变量的值)。假设pa所指向的变量为x,则*pa=x,依照题意,x=&a,也就是变量a的地址。因此我选的是D。

[此贴子已经被作者于2005-10-26 9:56:34编辑过]


搜索更多相关的解决方案: 标准答案  C语言  选择  

----------------解决方案--------------------------------------------------------
一般不会这样用 多麻烦
----------------解决方案--------------------------------------------------------
scanf("%d",&a);是a的地址。pa也是地址所以是a
*pa是一个数值不能付值
----------------解决方案--------------------------------------------------------
scanf("%d",&a); &a是数值所在的地址。正如楼主所说的,*pa是指针变量pa所指向的存储单元的内容(即pa所指向的变量的值)。所以pa就是数值所在地址,即&a,因此scanf("%d",&a);等价于scanf("%d",pa); 选A是正确的,*p指的是数值,不是地址。
----------------解决方案--------------------------------------------------------
今天我查了书,我知道我哪里做错了。原来:int *pa=&a;等效于 int *pa;pa=&a;  。

多谢各位的指教!
----------------解决方案--------------------------------------------------------
建议把 int* 看成是一个基本数据类型 pa看成是一个变量 那么 int* pa 就是一个 int* 类型的变量
----------------解决方案--------------------------------------------------------
多谢!!还望各位大虾继续指教。
----------------解决方案--------------------------------------------------------
当然是a了啊~
----------------解决方案--------------------------------------------------------
答案必须是A啊,因为是赋值到一个地址,&a,是a的地址,pa也是a的地址,毫无疑问
----------------解决方案--------------------------------------------------------
int *p=null;
这个是定义p是一个指向整型变量的指针变量,初始值为空。
这里*的名称是指针运算符
例如:int a=5;
          p=&a;
这里的p是地址,纪录的是a的首地址
例如:*p=6
这里的*p代表a所标识的内存单元的值由5改变为6,*p不代表地址
这里*的名称是间接运算符
而scanf的语法是:scanf(格式控制符,地址); 因此选:A
----------------解决方案--------------------------------------------------------