前言:本篇博客讨论 *运算符和++运算符的组合应用。如果你很好的理解( *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++了
当然了 * 和 -- 的组合应用也类似与 * 和 ++。
本博客分享就到这里了,以上若有错误请各位大佬指正!!!