c++ 指针与指针变量量 问题

这是我在编译器调试和书上的一些知识以后得出的结论!

首先得先告诉你一点知识:

++a就是直接返回a+1之后的结果,a++返回a未加1之前的结果,但a的确加1.

本人叙述能力有限,直接演示代码吧!

洎己琢磨吧!同时++优先级大于*!

如果弄懂了,问题一应该懂了吧?

"*(q++)应该是先执行括号内的表达式再输出*q的值吧?例如a的地址是1000,那么这时q++執行后的地址是1004",你讲的也没错,但是重点是p的地址是变成1004了,但"*(p++)"里的"*"操作的还是1000地址里的数据!

问题2我也搞不懂,但我在编译器上调试了一下,可以告诉你一些结论(我前面说的还没懂就别看这了,需要上面的知识).

可以得出一个很奇葩的结论,在printf里的表达式应该是从右到左执行的,但是可以认為"高优先级"的先计算.也就是全部++的先计算再从右到左计算其他式子,我不想在深究了,看到这我已经崩溃了.

例题2问题难说,不知道出题者怎么想嘚!

记得不知道是否书上有说(所以这个结论正确与否不清楚)

(*p++) == ((*p)++)这个式子有大问题,(*p++)执行后,p指向的地址已经变了,正如你所说,可以看成1004,那么之后的式孓((*p)++)里的p到底指向1000还是1004,这貌似就看编译器怎么处理了!所以这种式子用不得.


}

我要回帖

更多关于 指针与指针变量 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信