代码
#include <stdio.h>
#include <string.h>
int main(int argc,char* argv[])
{
int a[3]={1,2,3};
int *p =a;
printf("%d %d %d\n",a[0],a[1],a[2]);
printf("*p++\n");
printf("addr = %d\n",(int)p);
*p++=9;
printf("addr = %d\n",(int)p);
printf("%d %d %d\n",a[0],a[1],a[2]);
a[0]=1;
printf("*++p\n");
p = a;
printf("addr = %d\n",(int)p);
*++p = 9;
printf("addr = %d\n",(int)p);
printf("%d %d %d\n",a[0],a[1],a[2]);
return 0;
}
输出
1 2 3
*p++
addr = 750212780
addr = 750212784
9 2 3
*++p
addr = 750212780
addr = 750212784
1 9 3
结论
*p++=9;
等价于 *p=9;p++;
*++p=9;
等价于 ++p;*p=9;