关于C语言指针变量*p++ 、*(p++)、(*p)++的区别

 我来答
闭鲸白俊贤
2019-12-29 · TA获得超过3720个赞
知道大有可为答主
回答量:3125
采纳率:32%
帮助的人:230万
展开全部
c语言的指针,里面存放的是
物理地址。
而*p

取内容的意思,即
取当前存放内容对应(指向)的地址
里面的内容。
而p++
就是把
p里面的内容+1个单位,因为
p存的是地址,所以是
地址+1,也就是下一个地址。那么指针p
就指向了
下一个地址了。
涌博裕r4
2019-06-12 · TA获得超过3904个赞
知道大有可为答主
回答量:3176
采纳率:28%
帮助的人:183万
展开全部
*p++就等于*(p++)
p自加
先算出当前地址的值*p
然后指向下个地址
(*p)++是取出地址里的值
这个值自加
p还是指向原来的地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
井楠有济
2020-04-06 · TA获得超过3626个赞
知道大有可为答主
回答量:3008
采纳率:25%
帮助的人:173万
展开全部
首先搞明白一点,printf语句中表达式的执行顺序是从右向左的,并且对于*(q++),首先进行解引用操作,再自增,即*q,
q=q+1;所以说第一个printf的输出为2
2
对于第二个printf,首先执行(*q)++,再执行*p++,对于(*q)++可以转化为先执行(*q),即输出它的值,再执行(*q)=(*q)+1,最后输出*p,所以结果为3
2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
偶浚后雪晴
2019-08-05 · TA获得超过4301个赞
知道大有可为答主
回答量:3131
采纳率:30%
帮助的人:412万
展开全部
*p++
由于++和*同优级,是自右向左的结合方向*(p++),因此等价于*(p++);他们的作用是得到P指向的变量值(*P),然后P
+1=》P
(*q)++,是先取P指向的变量值,然后其值再加一;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
慈虎钦琦
2019-12-14 · TA获得超过3938个赞
知道大有可为答主
回答量:3246
采纳率:32%
帮助的人:220万
展开全部
1.
printf中表达式的计算是右结合的,即从右向左运算;但输出还是从左向右
2.
第一个printf,先取q所是单元的值显示,即为2,再对q++,即q所指单元地址后移一个单元,这里无意义;然后再对p指单元后自增,先输出2。“*”运算符的优先级高于“++”运算符。
3.
第二个printf,都是对p和q所指单元的值进行操作,(*q)++先输出a的值2,再将其值加1变为3;再将p所指单元的内容a的值输出3
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式