首页 > 代码库 > 关于*p++ (*p)++ *(p++)

关于*p++ (*p)++ *(p++)

    char ch[3]={‘a‘,‘c‘,‘e‘};
    char *p=ch;

    1、

         printf("%c\n",*p++);
         printf("%c\n",*p);

    执行结果wKioL1RVt9yiIAlTAAAcwxIG2xM519.jpg

    说明:首先 *(指针运算符)和++(自增运算符)都属于单目运算符 ,优先性相同,且结合性都是 自右向左。

    *p++ 先执行*p,即取出p指针指向的单元的内容,而后对p进行自增运算,即p指针指向原来单元的下一个单元,即指针p指向c单元。

    2、

    printf("%c\n",(*p)++);
    printf("%c\n",*p);

        执行结果:

            wKioL1RVvP7BCE3wAAAfYkn_eKo571.jpg

    说明:(*p)++ 大家都知道先执行括号内的 即取出p指向单元的内容, 但是与*p++不同的是 自增的不再是p,而是括号里面的整体*p ,(此时p指针也没有向后移位,而是改变了*p,即a自增1 变成了b)    

    3、

    printf("%c\n",*(p++));
    printf("%c\n",*p);

    执行结果:

    wKiom1RVvJHC1cmKAAAV_LDrGvQ660.jpg

    说明:*(p++) 先执行括号内的p++,但是如果对p++还进行操作的话 (该操作是 取内容 即* ,与第一个的区别就是 第一个是先进行了取p的内容,在对p进行自增前进行了输出的操作),是先引用p,再对p进行自增,所以第一句输出的仍然是a。

本文出自 “xingNalLu” 博客,请务必保留此出处http://781588100.blog.51cto.com/9429625/1570899

关于*p++ (*p)++ *(p++)