在技术论坛上闲逛时,看到一个奇怪的C++语法:offset[array]
跟我们常见的array[offset]语法不一样
这也是C++合法的语法?于是进行了验证,代码如下:
#include <iostream>
using namespace std;
int main(int argc, char** argv)
{
int arr_a[10] = {1,2,4};
cout << 1[arr_a] << endl;
cout << arr_a[1] << endl;
int* arr_c = new int(10);
arr_c[1] = 10;
cout << 1[arr_c] << endl;
cout << arr_c[1] << endl;
return 0;
}
用gcc 4.7.7试验下,可以正常编译,输出的结果
2
2
10
10
可以看出offset[array]和array[offset]输出结果一样。
那么offse[arry]有什么特殊的存在原因,查了半天资料,没找到原因。有知道的朋友帮忙解释下