#include
int main()
{
int a[]={2,4,6,8,10};
int p=a;
printf("%d\n",(*p++));
printf("%d\n",(++p));
printf("%d\n",(*++p)++);
printf("%d\n",*p);
return 0;
}
把a赋值给p,所以p和a是一样的,共用一个地址。
输出*p++,先输出在++,所以是2.
现在p的指针指向4.
输出++p,先+后输出,因为数组是引用型,数组的名字就是默认指向a[0]的指针。所以输出就是6.
输出*++p,p先+指向8,因为(*++p)++,所以先输出在++,输出8,然后8++就是9.
输出9.。
完事,希望点个免费的赞。不够清晰可以继续问我。
a=b++是先取值再加,等价于如下
a=b;b++;
a=++b是先加再取值,等价于如下
b++;a=b;
全拆开等价于如下函数
int main() {
int a[]={2,4,6,8,10};
int p=a;
printf("%d\n",*p); //打印2
p++; //指向4
p++; //指向6
printf("%d\n",*p); //打印6
p++; //指向8
printf("%d\n",*p); //打印8
(*p)++; //指向9
printf("%d\n",*p); //打印9
return 0;
}