一道C语言的题目,求详细解释*pa与pa的区别

Voidmain(){inta,b,*pa=&a,*pb=&b;*pa=3;*pb=4;a=5;b=6;Pb=pa;Printf(“%d\n”,*pa+*pb);}A、1... Void main()
{int a,b,*pa=&a,*pb=&b;
*pa=3;*pb=4;a=5;b=6;
Pb=pa;
Printf(“%d\n”,*pa+*pb);
}
A、10 B、11 C、12 D、7
展开
 我来答
zhuzuqingnu1
推荐于2017-12-15 · TA获得超过115个赞
知道答主
回答量:33
采纳率:0%
帮助的人:36.5万
展开全部
这里涉及的主要是对指针的理解;
首先声明四个变量,两个int类型的变量,两个int *类型的变量;int类型的变量存储的是int类型的值,int *类型的变量存储的是一个地址,这个变量可以存储一个int类型的地址,而这个int类型的地址里面毫无疑问存储的是一个int类型的值。
int *pa=&a,可分解成:
int *pa;
pa = &a;//把a的地址赋给pa
这样pa这个指针就指向了变量a的地址;
* 是一个解引用符,在这里,*pa就是指针pa所指向的内存当中存储的变量;也就是说这时*pa与a是等价的。

pb与b的关系也是一样的;
现在就很清楚了:
*pa=3;//往a这个变量里存3
*pb=4;//往b里存4
a=5;//往a里存5
b=6;//往b里存6
pb=pa;//pb这个指针指向变量a的地址
*pa + *pb;//就是a + a,并且此时a = 5

答案自然是 A
追问
那请问之前存进的3还有什么用?另外*p和p有什么区别
追答
之前存的3直接覆盖了,也就是丢失了。
*p是取p指针所指向地址里面存的值;p则是一个指针,它里面存的是一个变量的地址。
也就是,p这个变量里存的是一个地址,*p代表的就是这个地址里面的值。
bhtzu
2013-06-09 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4013万
展开全部
答案为A、10
你迷惑的可能是这里:
int *pa=&a,*pb=&b;
其实这个相当于:
int *pa,*pb;
pa = &a;
pb = &b;
这个是初始化的地址赋值模式,和指针正常赋值语句*pa=a是不一样的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-06-09
展开全部
#include<stdio.h>
void main()
{
int a,b,*pa=&a,*pb=&b;
*pa=3;*pb=4;a=5;b=6;

printf("a=%d,b=%d\n",a,b);
printf("pa=%p,pb=%p\n",pa,pb);
printf("*pa=%d,*pb=%d\n\n",*pa,*pb);

pb=pa;

printf("a=%d,b=%d\n",a,b);
printf("pa=%p,pb=%p\n",pa,pb);
printf("*pa=%d,*pb=%d\n",*pa,*pb);

printf("%d\n",*pa+*pb);
}
/*
A、10 B、11 C、12 D、7
*/

/*其实我没看懂,试过只后才知道结果是什么*/

a=5,b=6
pa=0012FF7C,pb=0012FF78
*pa=5,*pb=6

a=5,b=6
pa=0012FF7C,pb=0012FF7C
*pa=5,*pb=5
10
Press any key to continue
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式