这个结果是咋得出来的

img

我是这样理解的,不一定对,供你参考:
首先p指向变量a,*p即变量a的值,
q指针指向指针p的地址,即p指针的指针(二级指针),**q即p指针指向地址的值,即a的值5


然后a赋值为p指针指向地址(a的地址)的值5,加上q指针指向地址的地址的值(指针q指向的地址,a的地址)的值5,即10.


然后因为a的值变了,两个指向此处的指针的值(*p , **q)也跟着变了,都变为10,所以打印10 10 10

a是一个变量,存在某处
p是一指针,即a这个变量所在的地址
g是一指针的指针,即p这个指针本身存的地址

a=*p+*q; //p就等于a,也就是5;**q等于p,p等于a,也就是5,所以a=5+5=10

输出的时候,a,*p,**q其实都是说的a的值,也就是10

p指向a,q指向p,故而*p==a,q==a,(*q==p,q==*(q)==(p)==a)这涉及到二维指针的概念。