C语言中*p++与*++p还有++*p有什么区别?

 我来答
kjr200
2008-01-26 · 超过19用户采纳过TA的回答
知道答主
回答量:109
采纳率:0%
帮助的人:0
展开全部
如果*p=1 printf("%d",*p++)就等于1
如果*p=1 printf("%d",++*p)就等于2
这就是前缀和后缀的区别
*++p是指针向前移动一格再取值
Storm代理
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I... 点击进入详情页
本回答由Storm代理提供
百度网友a746892bb
2008-01-26 · TA获得超过107个赞
知道小有建树答主
回答量:178
采纳率:0%
帮助的人:0
展开全部
我只想说一点。运算符的实现其实是函数。你如果能将运算符看成是函数名就行了。前置++的函数实现是将变量加1后返回,而后置++的函数实现用到一个临时变量,比如是a++实现是{temp = a;a = a+1; return temp.}有了这个观念分析上述问题就很简单了。希望对你有帮助。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tk999999
2008-01-26 · TA获得超过121个赞
知道答主
回答量:103
采纳率:0%
帮助的人:0
展开全部
关键就是运算符的优先性和结合性以及表达式的结果是左值还是右值的问题, 把目标运算符 *, 前缀增量运算符 ++, 后缀增量运算符 ++, 以及各自对应的表达式结果是左值还是右值, 这些问题都搞清楚, 就没什么难以分别了.
我不多说, 只强调几点: 增量运算符(无论前缀还是后缀)的操作数必须是左值(你可以理解为是一个变量), 但表达式结果的取法按前缀或后缀是有分别的; 目标运算符 * 的操作数不必是左值(但可以是左值) , 而对应表达式的结果却一定是一个左值(在内存中是占有存储位置的).
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友93ef279
2008-01-26 · 超过47用户采纳过TA的回答
知道小有建树答主
回答量:164
采纳率:0%
帮助的人:109万
展开全部
x = *p++ 就是 x = *p; p++;
x = *++p 就是 ++p; x = *p;
++*p,就等于 ++(*p)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式