有inta[10,11,12],*p=&a[0];则执行完*p++;*p+=1后,结果是什么

想要个过程。。。。。... 想要个过程。。。。。 展开
 我来答
L_o_o_n_i_e
推荐于2017-12-07 · TA获得超过4.2万个赞
知道大有可为答主
回答量:8507
采纳率:38%
帮助的人:5036万
展开全部
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 了
mafangsan
2017-12-05 · TA获得超过1.2万个赞
知道大有可为答主
回答量:1万
采纳率:71%
帮助的人:2467万
展开全部
你写错了吧
应该是
int a[]={10,11,23},*p=&a[0];
那么p就指向a[0]

*p++;
*p++就是先取出指针p指向的地址单元的数据,这里的++是让指针加1,该步骤做完之后a[0]继续是10,但是p已经指向了a[1]
*p+=1
的实质就是a[1]=a[1]+1 由此a[1]==12
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式