一. *p++,(*p)++
#include<stdio.h>
int main(){
int a[]={1, 3, 5, 7, 9];
int *p = a;
int i;
for( i = 0; i < sizeof(a)/sizeof(a[0]); i++){
printf("%d ",a[i]);
}
printf("before:%d %p\n",*p, p);
*p++;
printf("after :%d %p\n",*p ,p);
*p = 11;
printf("before:%d %p\n",*p, p);
(*p)++;
printf("after :%d %p\n",*p ,p);
for( i = 0; i < sizeof(a)/sizeof(a[0]); i++){
printf("%d ",a[i]);
}
return 0;
}
1.打印数组元素 1 3 5 7 9
2.打印p之前指向a的首地址以及值,执行 *p++ 后, 指针p地址+1,指向a[1],值为3。
3.执行*p = 3; 将值为2 赋给a[1] ,此时p的地址为a[1]的地址,值为11。
4.(*p)++ ,p当前地址的值自增1,即12。
5.打印数组元素 1 12 5 7 9
二.++*p,*++p
*++p 地址+1取值,如上述数组 p的值为 3。 (a[1])
++*p 取值后+1 ,如上述数组 p的值为2。 (a[0])