1. 程式人生 > >C藝術篇 3-1 指標與一維陣列(1)

C藝術篇 3-1 指標與一維陣列(1)

我們先來看指標與一維陣列的關係,例題如下:

從輸出結果得知,arr是陣列名,它是指標常量,而ptr是指標變數。

arr表示此陣列第一個元素的地址,即arr等同於&arr[0]。

arr可以使用指標變數的*表示符號,如*arr等同於arr[0],*(arr+1)等同於arr[1],依次類推。

在2-1中介紹過

int *ptr = &x;

其實是下列兩條語句的組合

int *ptr;

ptr = &x;

可以理解為 ptr就是地址,當本題將陣列地址給ptr時候, 把ptr當為陣列,所以ptr[i]表示的是值,而ptr+i表示的是地址。

同理ptr也可以使用指標變數的[]表示符號,如目前ptr所指向變數地址的值為ptr[0],其等同於*ptr,而ptr[1],等同於*(ptr+1),依次類推。

再來看範例:

 

 

從輸出結果得知,pi+1;只是將目前的pi往下移到下一個元素的地址,它並沒有覆蓋pi。

而pi++;不僅將目前的pi移到下一個元素的地址,而且還將此新值覆蓋pi/我們可以對指標變數pi做++的動作,但是不可以對陣列名i做++的動作。

當指標、自增(++)運算子或自減(--)運算子,及*這三個運算子在同一語句時,要注意++的作用點在哪裡。