c ++指针和索引更改位置

iam*_*mnp 1 c++ pointers

我在互联网上找到了这个代码,并想知道它是如何工作的?

int m[10]; //array with 10 elements
for (int i=0; i<10; ++i)
    m[i] = i; //simple initializing

int* a = &m[0]; //a - pointer at the first array's element

3[a] = 20; //???

for (int i=0; i<10; ++i)
    cout << m[i] << endl;//out
Run Code Online (Sandbox Code Playgroud)

你可以猜到输出是:

0
1
2
20
4
5
6
7
8
9
Run Code Online (Sandbox Code Playgroud)

Rei*_*ica 6

当其中一个ab是指针而另一个和整数a[b]相等时*(a + b).由于加法是可交换的,*(b + a)因此,与定义[]相同,是相同的b[a].