C++运算符[]魔法

C++ operator[] magic

本文关键字:魔法 运算符 C++      更新时间:2023-10-16

我遇到了一种奇怪的方式来吸引数组的一个元素,并认为这是一个错误,但它有效。你能解释一下它是如何工作的吗?

#include <iostream>
int main()
{
  int a[] = {1,2,3,4};
  std::cout << 1[a];
}
表达式

a[b]等效于*(a + b)所以在你的例子中我们有:

1[a]可以写成*(1 + a) 哪个与*(a + 1)相同

,最终与a[1]相同
BaseAddr[ Offset ] = *( BaseAddr + Offset )
Offset[ BaseAddr ] = *( Offset + BaseAddr ) = *( BaseAddr + Offset )