辨析*P++,*(p++),*(++p),++(*p),*(P--),*(--P)

1,*p++

由于++和*同等优先级,结合方向为自右向左,因此它等价与*(p++)。先引用p的值,实现*p的运算,然后再使p自增1。======注意===== 其中为什么是先执行*p然后再执行*p++,不应该是先执行括号里的p++再执行*p的么?其实这里又把++放前后的运算顺序忘了,拿*p++来说明问题,实际上本身就先执行的p++,再才*p。但是执行p++ 的意思是(注意)先使用p,再p++,所以这就组合成了先是执行*p即先引用,再才执行p++自增!

2,*(p++)与*(++P)

前者是先取*p的值,然后使p加1。后者是先使p加1,再取*p 。若p的初值为&a[0],输出*(P++),得到a[0]的值。输出*(++p),得到a[1]的值

3,++(*P)

表示p所指的元素加1,如果p = a , 则++(*p)相当于++a[0],若a[0]的值为3,则在执行++(*p)后a[0]的值为4。注意是元素a[0]的值加1,而不是指针p的值加1。

4,*(P--)与*(--P)

*(P--):先对p进行“*”运算,再使p自减。
*(--P):先使p自减,再进行“*”运算。


1,*p++

由于++和*同等优先级,结合方向为自右向左,因此它等价与*(p++)。先引用p的值,实现*p的运算,然后再使p自增1。======注意===== 其中为什么是先执行*p然后再执行*p++,不应该是先执行括号里的p++再执行*p的么?其实这里又把++放前后的运算顺序忘了,拿*p++来说明问题,实际上本身就先执行的p++,再才*p。但是执行p++ 的意思是(注意)先使用p,再p++,所以这就组合成了先是执行*p即先引用,再才执行p++自增!

2,*(p++)与*(++P)

前者是先取*p的值,然后使p加1。后者是先使p加1,再取*p 。若p的初值为&a[0],输出*(P++),得到a[0]的值。输出*(++p),得到a[1]的值

3,++(*P)

表示p所指的元素加1,如果p = a , 则++(*p)相当于++a[0],若a[0]的值为3,则在执行++(*p)后a[0]的值为4。注意是元素a[0]的值加1,而不是指针p的值加1。

扫描二维码关注公众号,回复: 13063239 查看本文章

4,*(P--)与*(--P)

*(P--):先对p进行“*”运算,再使p自减。
*(--P):先使p自减,再进行“*”运算。


猜你喜欢

转载自blog.csdn.net/publicstaticfinal/article/details/90005142
p
今日推荐