首頁  >  文章  >  後端開發  >  為什麼 `2[arr]` 在 C 和 C 中有效?

為什麼 `2[arr]` 在 C 和 C 中有效?

Susan Sarandon
Susan Sarandon原創
2024-11-26 13:56:09722瀏覽

Why Does `2[arr]` Work in C and C  ?

C 和C 語言中透過索引[array]存取數組

涉及非常規數組存取語法2[arr] 的經典面試問題有引起了程式設計師的好奇心。這種為數組的第三個元素賦值的語法由於數組名和索引的順序顛倒了而顯得不尋常。

根據 C/C 規範,這種非正統的做法確實有效。 C99 標準的 6.5.2.1 第 1 段明確指出 [] 運算子的參數包括「指向物件類型的指標」類型的表達式和整數表達式。

此外,第2 段闡明了[] 運算子與(*((E1) (E2))) 相同,其中E1 表示陣列物件(或指向其第一個元素的指標),E2 表示整數索引。雖然此定義概述了運算子的功能,但它不會對參數的順序施加任何限制。

這意味著像 2[arr] 這樣的表達式(其中索引位於數組名稱之前)在語法上是有效且語義正確。此表達式的計算結果為 *(2 arr),其中 2 被加到陣列的基底位址上。因此,數組的第三個元素被成功定位和修改。

因此,2[arr] 的反向語法不僅僅是編譯器技巧,而是 C 和 C 語言的合法功能,允許程式設計師存取以非傳統但功能齊全的方式儲存陣列元素。

以上是為什麼 `2[arr]` 在 C 和 C 中有效?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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