為什麼在 C/C++ 陣列中 a[i] == i[a]?


在這裡,我們將看到 C 或 C++ 中的一個驚人技巧。陣列下標 A[i] 也可以寫成 i[a]。在 C/C++ 中 E1[E2] 被定義為 (*((E1) + (E2)))。編譯器在內部執行算數運算以訪問陣列元素。由於轉換規則應用於二進位制 + 運算子,如果 E1 是一個數組物件,而 E2 是一個整數,那麼 E1[[E2] 表示 E1 陣列中的 E2th 元素。因此,A[B] 可以定義為 *(A + B),因此 B[A] = *(B + A)。因此,它們基本上是同一件事。

示例

 現場演示

#include <iostream>
using namespace std;
int main() {
   int array[] = {1, 2, 3, 4, 5, 6, 7};
   cout << "array[5] is " << array[5] << endl;
   cout << "5[array] is " << 5[array];
}

輸出

array[5] is 6
5[array] is 6

更新於: 03-Jan-2020

254 次瀏覽

開啟你的 職業

完成課程獲得認證

立即開始
廣告
© . All rights reserved.