如何理解*p++

后置递增运算符的优先级高于解引用运算符!

*p++ 等价于 *(p++)

 

但是,我们*p++的求值结果不可理解为p+1指向的对象的值,而应该是p指向的对象的值

这是由于后置++的特性引起的。

 

*p++:把p的值加1,然后返回p的初始值(即未加1)的副本作为其求值结果,此时解引用运算符的运算对象是p未增加之前的值(即p,而非p+1)。

换句话说,*p++的效果其实和“*p, p++”的效果一样,只不过更简洁!

 

============================楚=========河==============================

由此,我们也可以推测*++p的求值结果,对于前置++,当然是把p增加后的值(即p+1)作为解引用运算符的运算对象。

 

而(*p)++和++*p则只是将p所指对象的值加1,p的值并未改变!

posted @ 2017-10-11 20:39  GGBeng  阅读(2313)  评论(0编辑  收藏  举报