我在网上看到了这个,并想知道是否有人能够解释这个或者至少给我一个可能的名称,这样我至少可以知道我在谷歌上搜索.
int main() { int myarray[4] = {0, 100, 200, 300}; 2[myarray] = -999; //why does this work? what is this called? for ( int i = 0; i < 4; i++) cout << myarray[i] << endl; }
输出为0,100,-999,300
我跑了.我知道它有效,但为什么呢?这个叫什么?
这种情况的原因是因为arr[n]
== *(arr + n)
.
但是,因为加法是可交换的,*(arr + n)
== *(n + arr)
.因此,*(n + arr)
== n[arr]
== *(arr + n)
== arr[n]
.
值得一提的*(arr + n)
是,这仍然有点误导.在装配实际上就意味着*(arr + (n * s))
哪里s
的sizeof arr[0]
,但是这是在幕后,所以你不必担心.