*p++ 先取到指针p指向的值,即*p,然后再给指针p加1,即让p指向下一个位置
*(++p) 先给指针p加1,即让p指向下一个位置,然后取出p此时所指位置的值
(*p)++先取出p当前所指的值,然后给这个值加1,指针所指位置不变
我用一个例题来说明吧
#include
int main()
{
int a[10] = {1, 2, 3, 4, 5, 6,7, 8, 9, 10};
int *p = a;
printf("%d\n",*p++);//先输出P对应的值,然后自加
printf("%d\n",*(++p));//先自加,然后输出p指向的值
printf("%d\n",(*p)++);//和*p++相同,没有区别
return 0;
}
结果是
1
3
3
*p++即*(p++)即*p,*++p即*(p+1),(*p)++即(*p)+1,