一个简单的c语言问题求个解释
int a[4] = {0,4,5,13}, *p;p = &a[2];
printf("*p++=%d\n", *p++);
请问为什么答案是4呢?
我是新人,跪求解释
int a[4] = {0,4,5,13}, *p; p = &a[2]; printf("++(*p)= %d\n", ++(*p)); //这里++(*p),先求指针指向的数字5,然后自加得到6,但是p没变,*p=a[2] printf("*--p=%d\n", *--p); //这里p已经变了,先对p减1,然后求p指向的地址的数字.*p=a[1] printf("*p++=%d\n", *p++); //这里在执行这一步的时候和上一步比p没变,但和开始的时候比p变了,比开始的时候小1.*p=a[1], 执行完后,对p加1.*p指向 //了a[2].如果紧跟这里有语句printf("*p=%d\n", *p);的话,可以验证会输出6. printf("%d\n",a[0]);