char ch[3]={'a','c','e'}; char *p=ch;
1、
printf("%c\n",*p++); printf("%c\n",*p);
說明:首先 *(指針運算符)和++(自增運算符)都屬於單目運算符 ,優先性相同,且結合性都是 自右向左。
*p++ 先執行*p,即取出p指針指向的單元的內容,而後對p進行自增運算,即p指針指向原來單元的下一個單元,即指針p指向c單元。
2、
printf("%c\n",(*p)++); printf("%c\n",*p);
執行結果:
說明:(*p)++ 大家都知道先執行括號內的 即取出p指向單元的內容, 但是與*p++不同的是 自增的不再是p,而是括號裏面的整體*p ,(此時p指針也沒有向後移位,而是改變了*p,即a自增1 變成了b)
3、
printf("%c\n",*(p++)); printf("%c\n",*p);
執行結果:
說明:*(p++) 先執行括號內的p++,但是如果對p++還進行操作的話 (該操作是 取內容 即* ,與第一個的區別就是 第一個是先進行了取p的內容,在對p進行自增前進行了輸出的操作),是先引用p,再對p進行自增,所以第一句輸出的仍然是a。