指针的一个问题,求详解

设有定义:inta,*pa=&a;,以下scanf语句中能正确为变量a读入数据的是()。答案:DA、scanf("%d",&pa);B、scanf("%d",*pa);C... 设有定义:int a,*pa=&a;,以下scanf语句中能正确为变量a读入数据的是( )。答案:D
A、scanf("%d",&pa);
B、scanf("%d",*pa);
C、scanf("%d",a);
D、scanf("%d",pa);
展开
 我来答
金色潜鸟
2013-09-26 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5746万
展开全部
int a,*pa=&a; 这是声明。声明里 *pa 是指针。
声明 int 型 变量 a。
声明 int 型 指针 pa, 并初始化 -- 让它指向 变量 a 的地址。

scanf(...) ; 是 语句。
语句里 *pa 是指针 指向的 值。
语句里 pa 是指针 指向的 地址。
语句里 a 是变量a 的 值。
语句里 &a 是变量a 的 存储地址。
语句里 &pa 什么都不是,它有语法错误。

scanf("%d",...); 语句,
小括号里, 第一部分 是 输入 格式描述,%d 是 按10进制整型 格式输入。
小括号里, 第二部分 是 输入数据 进 某地址,要求 添 变量的地址,或指针指向的地址。
A,pa 什么都不是,有语法错误。所以不对。
B,语句里,*pa 是指针 指向的 值,不是 指针指向的地址。所以不对。
C,语句里,a 是变量a 的 值。也不符合 要求。所以不对。
D, 语句里,pa 是指针 指向的 地址, 符合 要求,正确答案 选它。

上面特别强调了 声明 和 语句。这是因为 外貌相似的东西,在声明里 和 在 语句里 意义不同。例如,
声明里 *pa=&a; -- 把a的地址赋给 pa.
语句里要写 pa = &a -- 把a的地址赋给 pa.
语句里要写 *pa = a -- 把a的值赋给 pa.
遇到 char *pa; 则更烦人。
cdyzxy
2013-09-26 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:85%
帮助的人:3778万
展开全部
scanf语句要求在后面提供一个整型数据存储区的地址。
A.&pa错,变量pa存放的是一个地址,地址本身并不是整型数据,输入后的数据当作地址数据存放到变量pa中将会导致pa指向的存储区有可能指向系统内存的错误地址,会给下一步pa的使用造成麻烦;
B.*pa错,*pa就是pa指向存储区(a)的值,这是个整型值而且还未给a赋过值,拿a存放的数据当成一个地址来用这是有问题的,这个指针是“野”指针;
C.a错,这同B的情况相同,a的值就是*pa
D.pa正确,pa正是一个指向整型存储区的指针,而且它已经被赋值指向变量a,输入的整型数据将存放到变量a的存储区中。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
z362752011
2013-09-26 · 超过31用户采纳过TA的回答
知道答主
回答量:65
采纳率:0%
帮助的人:38.7万
展开全部
int a,*pa=&a;这一句可以分解为:
int a;
int *pa;
pa=&a;
在scanf函数获取整数时候,需要一个证书的地址,也就是int *类型的,满足int *类型的只有 &a和pa
故选择D
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cpucash
2013-09-26 · TA获得超过1584个赞
知道小有建树答主
回答量:1457
采纳率:66%
帮助的人:973万
展开全部
d
scanf索要输入的是一个变量的地址
那么bc都不对
a选项中要输入a,那么就要a的地址,但是&pa是pa的地址,所以不对
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式