
若有定义和语句: int **pp,*p,a=10,b=20; pp=&p;p=&a;p=&b;printf("%d,%d\n",*p,**pp);
则输出结果是:()A.10,20B.10,10C.20,10D.20,20答案为D,可是具体分析是怎么的呢?...
则输出结果是:()
A.10,20
B.10,10
C.20,10
D.20,20
答案为D,可是具体分析是怎么的呢? 展开
A.10,20
B.10,10
C.20,10
D.20,20
答案为D,可是具体分析是怎么的呢? 展开
1个回答
展开全部
应为指针p最终指向的是b的地址所以 *p输出的是b的值
**pp是指针的指针 pp=&p 干的事情是将p的地址指向pp,此时*pp 相当于 p 所以 **pp 可以看成是
*(*pp) 即* p所以输出的是b的值
**pp是指针的指针 pp=&p 干的事情是将p的地址指向pp,此时*pp 相当于 p 所以 **pp 可以看成是
*(*pp) 即* p所以输出的是b的值
追问
为什么讲指针p最终指向的是b的地址,而不是a呢?怎么看的?
追答
程序是从上往下执行的
先执行;p=&a;这时p指向a的地址
然后执行p=&b;这时指向b的地址
所以最后*p输出的是b的值
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询