使用&array[5] 存取最後一位陣列元素
問題:
問題:[5] 是否被視為有效的 C程式碼表達式,它引用了超出了末尾的元素array?
答案:是的,根據C 標準,&array[5] 被視為合法的C 代碼。
詳細解釋:
6.5.3.2,第3 段: 指出如果& 運算子的運算元是[] 運算子的結果,則不計算& 運算子和隱含的一元* ,導致& 運算子被刪除,並且 [] 運算子被替換為運算子。
6.5.6,第8 段:
允許指針指向數組的最後一個元素,前提是它們沒有取消引用。由於數組5 指向數組末尾且未取消引用,因此&array[5] 是有效的
與C 標準的比較:C 標準在這方面與C 標準相符。
區別對待的原因來自於數組5 或&array[4] 1:之間的主要區別&array[5] 和array 5 或&array[4] 1等表達式是它們的預期用途。雖然陣列 5 和 &array[4] 1 明確執行指針算術來取得從陣列開頭偏移的指針,但 &array[5] 使用 [] 運算子直接存取該偏移處的元素。這種區別使程式設計師可以更輕鬆地引用數組的末尾,而無需執行明確的指標算術。以上是&array[5] 是用來存取結尾後一位陣列元素的有效 C 表達式嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!