為什麼t、&t[0] 和轉換為指標的t 具有相同的位址
陣列是連續的記憶體區塊包含相同資料類型的元素。聲明數組時,編譯器會分配一塊記憶體並建立指向該區塊內每個元素的指標。
情況1:t 和&t[0]
當您單獨使用t 時(沒有任何下標),它會進行數組到指針的轉換,產生一個指向數組第一個元素的指標。此行為相當於使用 &t[0],它明確傳回第一個元素的位址。因此,t 和 &t[0] 具有相同的值。
情況 2:&t
但是,當您將 & 運算子應用於 t 時,它不會觸發數組到指針的轉換。相反,&t 直接取得 t 本身的位址,從而產生指向整個陣列的指標。
在記憶體中,陣列的第一個元素和陣列的開頭位於同一位置。因此,指標 t、&t[0] 和 u(指向 t 的指標)都具有相同的位址。
輸出說明:
給定的程式碼示範了這一點行為:
int t[10]; int * u = t; cout << t << " " << &t << endl; cout << u << " " << &u << endl;
輸出:
0045FB88 0045FB88 0045FB88 0045FB7C輸出:輸出:輸出顯示t、&t[0] 和u 具有相同的值(0045FB88),確認它們與指針等效。
以上是為什麼 `t`、`&t[0]` 和指向 `t` 的指標具有相同的位址?的詳細內容。更多資訊請關注PHP中文網其他相關文章!