(*p)++和*(p++)和*p++的区别,为什么?

*(p++)究竟是谁++,是p的地址++,还是p所指的东西的地址++... *(p++)究竟是谁++,是p的地址++,还是p所指的东西的地址++ 展开
 我来答
白石黄海青
2011-02-17
知道答主
回答量:52
采纳率:0%
帮助的人:23.6万
展开全部
第一个,p所指的那个值加1。第二个,假设p指向a[1],则使用时用a[1],但p已指向a[2],假设a[2] 存在。第三个,和第二个一样的解释,因为++的优先级别高于*的,那个括号有没有都一样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
井钰gQ
2009-03-20 · TA获得超过2480个赞
知道大有可为答主
回答量:1303
采纳率:0%
帮助的人:1494万
展开全部
首先,明确:++的优先级高于*的优先级。
(*p)++
//首先取p所指向的值,给它所指向的值做后缀加,由于是后缀加,所以返回原来表达式的值,即该表达式最后的值为p所指向的值
*p++
//它相当于*(p++),首先指针p后移,由于对指针是后缀加,所以p++返回p没后移时的指针,如果是数组,那么表达式的值为指针当前所指元素(指针没有后移时)的值
++*p
//即相当于++(*p),先取p所指向的值,然后施以前缀加,则该表达式的值为p当前所指对象的值+1的结果。
*++p
//相当于*(++p),指针p先后移,如果是数组,则指向下一个元素,然后++p返回指针下移后的指针。然后*取下移指针后所指向的值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangbwell
2011-02-17 · TA获得超过1238个赞
知道小有建树答主
回答量:490
采纳率:0%
帮助的人:737万
展开全部
int Arr[2]={100,100};
int *p=&Arr[0];
(*p)++ // 等价于Arr[0]++ p不变 既p所指向的内容增1
*(p++) //等价于 Arr[0] p=&Arr[1], 获取p所指向的内容后 p指针增加1
*p++ 和*(p++) 一样, 由于 ++操作优先于*
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhao19900126
2014-03-20 · TA获得超过259个赞
知道答主
回答量:211
采纳率:0%
帮助的人:154万
展开全部
首先p指的是指针,这你一定知道, *p++相当于(*p)++ 也就是平所指的值自加一,
*(p++)相当与p的地址加一个单位,具体加多少要看p的类型了,详细不说了。就是p的下一个地址的值。 这就是区别。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
啊啊阿橙
2020-04-18
知道答主
回答量:1
采纳率:0%
帮助的人:629
展开全部

自己跑个程序就知道了

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式