指针变量的运算规则有关问题

指针变量的运算规则问题
看到有两个例题,无法理解,请各位高手指导,非常感谢:

例题1:
int a=2,*p=&a,*q=&a;
printf("%d %d\n",*p++,*(q++));
p=&a;q=&a;
printf("%d %d\n",*p,(*q)++);

该程序运行结果为:
2 2
3 2
第一行第一个数字结果2,是因为右++是先执行,后运算,执行就是输出变量a中储存的数据,也就是2,这个结果可以理解;最后再执行++,此时a中储存的数据为3;
第二行第一个数字结果3,直接输出*p,是输出a中储存的数据,也就是上次执行*p++执行后的结果,结果为3这个我也可以理解;

问题1:
但第一行的第二个数字结果2,*(q++)应该是先执行括号内的表达式,再输出*q的值吧?,例如a的地址是1000,那么这时q++执行后的地址是1004,那么应该输出空间地址为1004中储存的数据吧?显然1004中的数据题中也没有告诉,我也知道我这么想肯定是有问题的,但目前我的思路也只能到这里,麻烦各位高手详细解答,真心感谢!
问题2:
第二行第二个数字结果2,也想不通,第一行第一个数字输出后,a中的值就已经++变为3了,那么(*q)++应该直接输出a的值也就是3,然后再执行++,那么为什么这里(*q)++的值还是2?请高手详解啊


例题2:
写出下面各表达式的结果,并找出具有等价关系的对子:
&*p *&a (*p)++ &a a *p++ *(p++) a++
题中说:&*p=&a *&a=a (*p)++ =a++ *p++=*(p++);
视频中所说的结果我也认为是这样,但是(*p)++为何不等于*p++? 那么*p++为何不等于*(p++)? (*p)++为何不等于*(p++)???

------解决方案--------------------
*p++就是*(p++)。
至于你对第一行的理解,是有问题的。*p++和*(q++)没有区别,并没有修改a的值。所以,运行到第二行的时候a的值仍旧为2。
另外,这道题给a分配了两个有管理权限的指针,按照第二行的写法,很可能就会造成未定义行为。
建议LZ去看看置顶的帖子,有关求值顺序的那个。如果你这个例题是在书上看到的话,那我觉得可以换一本教材了。
------解决方案--------------------
*p++,*(q++)这两个表达式运算优先级都是一样的,加上括号其实也没有改变其优先级,不过加上括号能使优先级更明确。++的优先级高于*,所以p与++,q与++先结合,但是由于++是后增,所以,先算p++表达式的值,然后在自增。所以打印出的值都是2.
下面的运算跟参数压栈的顺序有关,即压栈顺序是从右向左(不过有的编译器不是这样的),所以先算(*q)结果是2,然后自增,即3,然后压栈*p,*p的值就是3了。
------解决方案--------------------
不是先“执行”,是与谁结合的问题
(*p)++,这里++的结合对象即作用对象是*p,由优先级,先取*p的值,再对*p进行++
*p++和*(p++),++的结合对象是p,先取*p,再对p进行++
------解决方案--------------------
你的理解错误了
第一行的p++返回的是原来的p 也就是a的地址 没有改变a的值 而改变了p的值 *(q++)在这里和 *p++是一样的

第二行会有个3是因为 (*q)++先于 *p++先执行了 前者修改了a的值 使其变为3
所以*p++输出的仍然是a的值 但是变成了3

但是第二行的行为时未定的
C++没有规定说 (*q)++会先于 *p++先执行!
 
------解决方案--------------------
这是我在编译器调试和书上的一些知识以后得出的结论!
首先得先告诉你一点知识:
++a就是直接返回a+1之后的结果,a++返回a未加1之前的结果,但a的确加1.
本人叙述能力有限,直接演示代码吧!
C/C++ code
int a = 2, b =0;
    b = ++a;
    printf("%d %d\n",a,b);
    a = 2, b =0;
    b = a++;
    printf("%d %d\n",a,b);

------解决方案--------------------
http://topic.****.net/u/20110826/09/601ebe9c-c2ae-4d63-a4e2-506c618bb654.html
这个帖子看看吧!
------解决方案--------------------
还是建议楼主看看裘老的那个解释,,一看就明白了。。。
------解决方案--------------------
探讨

引用:

还是建议楼主看看裘老的那个解释,,一看就明白了。。。

裘老的解释哪里有呢?麻烦说下,谢谢了,我看的谭浩强的

------解决方案--------------------
探讨

引用:

还是建议楼主看看裘老的那个解释,,一看就明白了。。。

裘老的解释哪里有呢?麻烦说下,谢谢了,我看的谭浩强的

------解决方案--------------------
日经。