p和q是int型指针变量,p和q交换后,p指向变量b的地址,q指向变量a的地址,但a和b值不变,仍然为12和34。*q=*p+*q执行后,p指向内存(b)值为34,q执行内存(a)值为46,故a为46,b为34。
这种C++程序首先就是要把逻辑弄清楚,最好是拿支笔写一下。
p指向a=12,q指向b=34
pb=34,*q->a=12
b=34,*q->a=12
cout<<*p->b=34,*q->a=12
*q->a=*p->b+*q->a;其实就是a=a+b;
所以最后a是46,b是34