【c++筆記】關於指向數組的指針

關於指向數組的指針,撥亂反正:

short int height[10]; //int型的數組(short int 每個數據2字節)
cout <<  "height       "<< height << endl 
     <<  "height+1     "<< height + 1 << endl
     <<  "&height[0]   " <<  &height[0] << endl
     <<  "&height+1    "<< &height + 1<< endl
     <<  "height+9     "<< height+9 << endl
     << "height+10    " << height + 10 << endl;

結果如下:

height       0136F900
height+1     0136F902
&height[0]   0136F900
&height+1    0136F914
height+9     0136F912
height+10    0136F914

可以看到:

height 與 &height[0] 值相等。
height+1 = height + 2 字節 = height + 1 個 short int 也即 一個數組元素。
height+9 爲 height[] 中最後一個元素的地址,height+10 爲該數組結束後的第一個地址。
&height +1=height+10,即執行 &height+1 的結果是地址跳到整個數組之後第一個地址。

即:

& 並不是不能用在數組名上,只是用在數組名和數組名[i]有所區別。例如:

int height[10];//int型的數組
cout << &height << endl;//&用在數組名上
cout << &height[0] << endl;//&用在數組第一個元素上

上面 &height[0] 就是取得是數組第一個元素的地址,假設地址爲 1000;&height 是直接對數組名進行取地址,這個時候就是取得是 height 整個數組的地址,指向包含 10 個元素的 int 型數組,地址範圍爲 1000~1036;

我們知道 height 等價於 &height[0],height+1 會將地址加 4 個字節;但 &height+1 就是將地址增加 10*4 個字節。

發佈了76 篇原創文章 · 獲贊 3 · 訪問量 3946
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章