指针变量与++ --结合

来源:互联网 发布:mac视频下载插件 编辑:程序博客网 时间:2024/05/20 15:41

指针变量 跟 ++结合的时候由于优先级的问题,有时候会弄混淆,梳理如下:

1、 表达式及 ++

   对于任何一个表达式,表达式会做一些事情,并且整个表达式有个值。

   比如   a+b ,表达式做的是加法,并且表达式的值就是 两个数的和。


   对于   a++ 这种表达式,会对a自身+1, 但是表达式的值是a改变以前的值。

   对于   ++a这种表达式,也会对a自身+1,但是表达式的值是 a改变以后的值。


     int   a = 1;

     b = a++;    //这里 b 得到的是 a++这个表达式的值,也就是a改变以前的值。

     b=  ++a;    //这里b 得到的是++a这个表达式的值,也就是a改变以后的值。

2、++与指针结合。

      ++ 的优先级 高于 *。

      int  a[5] = {0,1,2,3,4};

      int *p = &a[0];

      以下两个分支:

     2.1----------------------------------------------- 

      当写表达式   *p++ 的时候 相当于  *(p++),  p++这个表达式的值是p改变以前的值,也就是a[0]的地址,所以这里访问的是a[0],并且p指向a[1];

       b = *p++, b的值是a[0],p指向a[1],a[0]不变。

     2.2----------------------------------------------- 

       当写表达式   (*p)++的时候,由于括号优先级最高,所以这个表达式的值是 a[0]++;

        b = (*p)++,b的值是a[0]改变以前的值,然后 a[0]自增1,p不变。


    


0 0
原创粉丝点击