指针的*和++(--)同时出现的一些情形

来源:互联网 发布:知乎封号解封 编辑:程序博客网 时间:2024/06/06 05:29
int a[2] = { 1, 10 };int *p = &a[0];


如果有下面的操作:

*++p*p++++*p++*++p

那么它的结果是怎样?如何理解?


如果*和++均在左边,则是从右向左结合的:

*++p  : 先对指针p向前移动1,然后*取该处的值

++*p  :先取p所指的值,然后对该值+1

++*++p :先对指针p向前移动1,取该处的值,然后对该值+1


如果*和++不在同一边:

*p++

那么它们是分别“操作”p的。

*p++ :先*p,得到该处的值,然后p++  移动指针。


当然,实际上还会产生中间变量,但是我们可以按上面的方法理解*和++结合的指针即可。