C語言指標的*p++ ,*p(++), (*p)++,*++p的使用
阿新 • • 發佈:2018-12-30
C語言的特點之一是程式碼可以寫的很精煉但對初學者來說不容易理解,因此弄清楚一些寫的很難懂的程式碼段就對我們學習c語言尤為重要了(寫在前面)
我們都知道指標可以結合陣列使用,下面來區分一下這幾個指標表示式:*p++ ,*p(++), (*p)++,*++p
正如i++和++i一樣,對於*p++和*++p來說,
*p++等價於:先處理*p,然後在執行p++;舉個列子(虛擬碼)
a[5]={1,2,3,4,5} ;
*p=a ;
for(5)printf *p++;
輸出是 1 2 3 4 5,且最後p指向&a【4】+sizeof(元素型別);
*++p等價於:先執行++p,在處理*p;同樣舉個列子(虛擬碼)
a[5]={1,2,3,4,5} ;
*p=a ;
for(4)printf *++p;
輸出是 2 3 4 5,且最後p指向&a【4】(注意for迴圈只執行4次)
*p(++)語法不對,編譯器會報錯
(*p)++比較有意思,表示指標p所指的空間的內容加1;
比如(虛擬碼) *p=&a;
(*p)++;
等價
*p=&a;
a++;
p所指的空間不變,仍然指著變數a,但是變數a大小加1
如果還不清楚可看圖