为了清晰明了,我们每次都使p指向数组的首地址。
(1)*p++
int b = *p++;//等价于a = *(p++); 即a = *p; p = p + 1;
执行上面语句,输出b=10
执行语句*p++;后,*p=20;
(2)*++p
int d = *++p;//等价于 p =p+1; d=*p;
*和++的优先级相同,但根据它们的右结合性可知,先p=p+1;后d=*p;因此d=20
(3)(*p)++
int e = (*p)++; 等价于 *p;*p+1
此处括号的优先级高于++运算符,因此先*p;后*p+1;因此e=10;之后再e+1
(4)++*p
int f = ++*p; 等价于*p+1
*和++的优先级相同,但根据它们的右结合性可知,先*p;后f=*p+1;因此f=11