理解陣列位址與轉換後的指標的等價
在C 程式語言中,將陣列轉換為使用陣列到指標轉換指向其第一個元素的指標。這就提出了一個問題,為什麼數組的位址與轉換後的指標的位址相同。
為了說明這個概念,讓我們考慮以下程式碼:
int t[10]; int *u = t; cout << t << " " << &t << endl; cout << u << " " << &u << endl;
輸出此程式碼示範了陣列位址和轉換後的指標位址的等效性:
0045FB88 0045FB88 0045FB88 0045FB7C
要理解這種現象,我們需要認識與符號t:
在我們的程式碼中,輸出的第一行顯示 t (陣列)的位址和 &t (指向陣列的指標)。由於數組是連續的記憶體區塊,因此它們的起始位址是相同的。
輸出的第二行顯示了 u (轉換後的指向第一個元素的指標)的位址和 &u (轉換後的指向第一個元素的指標)的位址指標)。同樣,這些位址是相同的,因為 u 本質上相當於 &t[0]。
因此,我們得出結論,數組的位址與轉換為指標的陣列的位址相同的原因是因為兩者都代表數組佔用的連續記憶體區塊的起始位址。這種等價性之所以成立,是因為數組到指針的轉換會產生一個指向數組第一個元素的指針,該元素與整個數組的開頭具有相同的內存位置。
以上是為什麼 C 中數組的位址等於指向其第一個元素的指標的位址?的詳細內容。更多資訊請關注PHP中文網其他相關文章!