C语言指针 请问为什么不是8787啊

 

*p=8

由于r=p,q=r,所以q=p,*q=*p=7

a=7,b=8

所以选C

这一堆指针操作,都不会改变a和b的值,除非出现*p=的形式才是修改值

a=7  b=8  没有问题,好理解。

r=p;p=q;q=r;  r是中间量,r=p=&a;==>r = &a;           

                                         p=q=&b;==>p=&b;-->*p=b=8

                                         q=r=&a;==>q=&a; -->*q=a=7

输出:8 ,7,7 ,8 

把指针看成通往一个房间的路径,a、b就是房间,无论路径怎么变,只要确定通往哪个房间就可以得到结果了。