前置自加自减和后置自加自减在指针上的区别
int main()
{
int ar[5] = { 12,23,34,45,56 };
int* p = ar;
int x = 0;
int y = 0;
x = *p++;
y = *p;
printf("%d %d \n", x, y);
x = ++*p;
y = *p;
printf("%d %d \n", x, y);
x = *++p;
y = *p;
printf("%d %d \n", x, y);
return 0;
}
输出结果为:
后置加加(*p++)的意思是:先将值提取出来使用,最后在自加1,等价于:
x = *p;
p = p + 1;
前置加加、加加在解引用符号前面时(++*p),表示:先取出p所存放地址中的数据,对数据进行自加1,再赋值给x,等价于:
*p = *p + 1;
x = *p;
前置加加、加加在解引用符号后面时(*++p),表示:先对p所存放的地址进行自加1,再提取改后的地址所存放的数据,赋值给x,等价于:
p = p + 1;
x = *p;