在C 和C 語言中使用Index[array] 存取陣列
考慮以下程式碼片段:
int arr[] = {1, 2, 3}; 2[arr] = 5; // Does this compile? assert(arr[2] == 5); // Does this assertion fail?
有些面試官可能會問為什麼這段程式碼片段編譯和執行時沒有錯誤。
理解程式碼
表達式 2[arr] 相當於 *(2 arr)。由於加法在 C 和 C 中是可交換的,因此 [] 的參數順序並不重要。因此,2[arr] 有效地存取了陣列 arr 的第三個元素。
這是由語言規範保證的嗎?
是的。 C 和C 標準明確規定了此行為:
因此,使用index[array] 存取陣列是由語言規範保證的,即使如果它看起來不尋常或違反直覺。
以上是`2[arr]` 在 C 和 C 中工作嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!