1

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

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

你可以猜到输出是:

0
1
2
20
4
5
6
7
8
9
4

2 回答 2

6

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

于 2013-05-11T10:55:04.693 回答
4

在你的情况下,a[b]相当于b[a]类似于 how a + bis the same as b + a

a[3]将从3a 往内存中的地址前进。
3[a]将从a3 开始在内存中前进地址。

看看它是如何工作的?;) (当然,这只适用于指针,因为它们是内存地址)

于 2013-05-11T10:54:15.117 回答