我在练习指针过程中,写了段代码
int arr[5]={1,2,3,4,5};
int *p=&arr[2];
printf("%d\n%d\n%d\n",*p,*(p++),*(++p));
我自己认为正常应该输出3 4 4 ,实际却输出了5 4 4
printf函数先运行了++p,使p指向了arr[3],最后一个值就等于4;
然后运行了p++,使p指向了arr[4],但是因为是后置自加,所以*(p++)值为4
最后运行的*p,此时p已经指向了arr{4},所以第一个值为5.
他这个顺序应该就是从右往左(后往前)执行,感觉应该是和存储结构有关,但不懂,已寄。
本人小见解,大佬勿喷。爱了爱了