首先,如果我有任何语法错误等,请原谅我的英文...
我的问题是,当我们有一个二维数组时,如果我没记错的话,从计算机和 C/C++ 的角度来看,它只是一个长的一维数组,索引只是帮助编译器映射到具体的地址。
这段代码片段在 Visual C++ 中可以工作,但我想知道,这段代码是否 可移植 和 符合 标准(C++98),在其他架构和/或操作系统上不会出现意外:
int arr[][3] = { 1, 5, 3, 7, 5, 2, 7, 8, 9 };
const int ARR_NUM = sizeof(arr) / sizeof(int);
int* ptr = reinterpret_cast<int*>(arr); // NOT: int(*)[][3] !!!
for (int i = 0; i < ARR_NUM; ++i) {
cout << ptr[i] << endl;
}
int * p = arr[0];
等同于int * p = &arr[0][0];
,但更加清晰易懂。 - Griwes