为什么在 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 次浏览

开启你的 职业

完成课程获得认证

立即开始
广告