#include <stdio.h>
int main()
{
int a[] = {1111, 2222, 3333, 4444, 5555};
int *p = a;
printf("*p1 = %d\n", *p);
printf("*p++ = %d\n", *p++);
p--;
printf("*p2 = %d\n", *p);
printf("*(p++) = %d\n", *(p++));
printf("*++p = %d\n", *++p);
printf("*(++p) = %d\n", *(++p));
printf("*p + 1 = %d\n", *p+1);
printf("*(p+1) = %d\n", *(p+1));
}
结果:
如果说像我标题所说,那么第一次 *p++不应该等价为 *(p++),结果不应该是2222吗?
*p++
是等价于*(p++)
,但是后缀++是返回p的原值
p++是先取值,后++呀
而且你两个p++之间又放了个p--,这不又减回去了吗
另:*作为指针标志的时候,和乘法的优先级并不一致
*在这里做指针标识符