首頁 >後端開發 >C++ >為什麼 `t`、`&t[0]` 和指向 `t` 的指標具有相同的位址?

為什麼 `t`、`&t[0]` 和指向 `t` 的指標具有相同的位址?

Susan Sarandon
Susan Sarandon原創
2024-11-26 08:12:09135瀏覽

Why Do `t`, `&t[0]`, and a Pointer to `t` Have the Same Address?

為什麼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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn