2个回答
展开全部
int a[]={10,11,12}, *p=&a[0];
指针 p 指向 a 的始地址,p[0] 是 10,p[1] 是 11, p[2] 是 12.
*p++; 运算符优先级++高,等于执行 *(p++); {而不是 (*p)++;}
执行完毕,p 指向 a[1] 的始地址, p[0] 是 11,p[1]是 12, p[2] 出界
*p+=1; 等于执行 *p = *p + 1; (也就是 a[1]=a[1]+1;),
11+1 *p 得 12。
printf("%d %d %d\n",a[0],a[1],a[2]);
得 10 12 12 了
指针 p 指向 a 的始地址,p[0] 是 10,p[1] 是 11, p[2] 是 12.
*p++; 运算符优先级++高,等于执行 *(p++); {而不是 (*p)++;}
执行完毕,p 指向 a[1] 的始地址, p[0] 是 11,p[1]是 12, p[2] 出界
*p+=1; 等于执行 *p = *p + 1; (也就是 a[1]=a[1]+1;),
11+1 *p 得 12。
printf("%d %d %d\n",a[0],a[1],a[2]);
得 10 12 12 了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询