關於*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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章