解除你的困惑:指针中*运算符和++运算符的组合应用

前言:本篇博客讨论 *运算符和++运算符的组合应用。如果你很好的理解( *p++)+=  1,那本篇博客可能对你没有帮助。

我们在使用指针处理数组元素时可能会经常使用 * ++ 运算符。思考一个简单的例子:把值存入一个数组元素中,然后前进到下一个元素。我们会这样写:

a[i++] = x; 

如果使用指针 p 指向数组元素,那相应的语句是:

*p++ = x;

由于后置 ++ 运算符的优先级高于 * ,所以在编译器的语句实际上是:

*(p++)= x;

因为是后置 ++ 所以(p++) 在这条表达式结束之前是 p,因此,*(p++)的值将是 *p,p 指向当前的对象。

那么刚开始我们讲的 ( *p++)+=  1,  实际是( *p++)=( *p++)+  1;也就等价于

(*p)= (*p) + 1 然后 p 在自增1。例:

* 与 ++ 组合应用不只上述的一种方式,下表提供了一些组合方式 :

自增表达式的含义
表达式含义
*p++或者*(p++)自增前表达式的值是 *p ,以后再自增 p
(*p)++自增前表达式的值是 *p ,以后再自增 p
*++p或者*(++p)先自增 p,自增后表达式的值是 *p
++*p或者++(*p)先自增 p,自增后表达式的值是 *p

以上几种我们见的最频繁的就是 *p++

当然了 * 和 -- 的组合应用也类似与 * 和 ++

本博客分享就到这里了,以上若有错误请各位大佬指正!!!

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值