理解陣列位址和指標轉換
在 C 中,陣列和指標密切相關,但理解它們的關係可能很棘手。讓我們探索以下程式碼片段來深入研究這個主題:
您觀察到的輸出是:
解密輸出
解密輸出解密輸出
解密輸出u (0045FB88) 的位址是可以理解的,因為它指向數組t 的第一個元素。然而,在分析涉及 t 的表達式時,就出現了令人困惑的地方。
t:
它表示陣列第一個元素的位址,與&t[0 相同].&t:
令人驚訝>&t: 令人印象深刻驚訝的是,它也產生相同的值(0045FB88)作為t。但為什麼呢? 數組到指標的轉換與數組位址理解這種行為的關鍵在於如何在表達式中使用t . 當t 單獨使用時,會自動發生陣列到指標的轉換。此轉換隱式產生指向數組第一個元素的指標。 相反,當 t 用作 & 運算子的參數時,不會發生陣列到指標的轉換。相反,& 明確取得數組本身的位址。 因此,&t 不是指向數組第一個元素的指針,而是指向整個數組的指針。 記憶體位置在記憶體中,陣列的第一個元素和陣列的開頭佔據相同的位置。這就是為什麼 t、&t[0] 和 &t 都具有相同的值。 總之,涉及 t 的表達式演示了數組到指標轉換與使用明確獲取數組位址之間的區別& 運算符。理解這種差異對於在 C 中有效使用陣列和指標至關重要。以上是陣列到指標的轉換和取址運算子 (&) 如何影響 C 中的陣列位址?的詳細內容。更多資訊請關注PHP中文網其他相關文章!