C中一元运算符*和++具有相等的优先级,但它们在结合时是从右向左的。
例:
#include<stdio.h> int data[2] = {100,200}; int moredata[2] = {300,400}; int main(void) { int *p1,*p2,*p3; p1 = p2 = data; p3 = moredata; printf("*p1 =%d, *p2 = %d, *p3 = %d\n",*p1,*p2,*p3); printf("*p1++ = %d,*p2++ = %d,(*p3)++ = %d\n",*p1++,*p2++,(*p3)++); printf("*p1 =%d, *p2 = %d, *p3 = %d\n",*p1,*p2,*p3); return 0; }
执行结果为:
*p1 =100, *p2 = 100, *p3 = 300
*p1++ = 100,*p2++ = 100,(*p3)++ = 300
*p1 =200, *p2 = 200, *p3 = 301
请按任意键继续. . .
在执行*p1++时是指针p1自增1而不是指针所指向的数据自增1.