我在网上看到了这个,并想知道是否有人能够解释这个或者至少给我一个可能的名称,这样我至少可以知道我在谷歌上搜索.
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;
}
Run Code Online (Sandbox Code Playgroud)
输出为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],但是这是在幕后,所以你不必担心.