当前位置:   article > 正文

【C语言】*++p,*p++,++*p,++*++p,++*p++_c语言*++p

c语言*++p

            部分运算符优先级和结合方向表

这里写图片描述

  首先我们在优先级及结合方向表中可以看到++运算符和*运算符是同属于一级的,且结合方向都是从右到左现在我们可以对下面的问题进行解释:

  下面p都是指针。

*++p

首先p的内存地址先自加一(++p先加后用),然后再进行解引用运算。

这里写图片描述

*p++

先进行解引用(p++先用后加),返回值以后再进行地址加1再进行解引用。

这里写图片描述

++*p

先进行解引用,然后将值加1,不是地址加1
这里写图片描述

++*++p

先将地址加1,然后进行解引用,然后再对值加1
这里写图片描述

++*p++

先进行解引用,然后再把值加1,返回值后再进行地址加1后再解引用再将值加1
这里写图片描述

测试程序:

#include<stdio.h>

void main()
{
    int a[] = { 1, 3, 5, 7, 9, };
    int *p = a;
    /*
    ** 注意每次运行一句话,因为这里不是临时变量,顺序会影响结果 
    */
    printf( "*++p:%x\n", *++p );
    //printf( "*p++:%x\n", *p++ );
    //printf( "++*p:%x\n", ++*p );
//  printf( "++*++p:%x\n", ++*++p );
//  printf( "++*p++:%x\n", ++*p++ );
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/79724
推荐阅读
相关标签
  

闽ICP备14008679号