为什么在 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
广告