【发布时间】:2016-12-13 11:46:29
【问题描述】:
数组可以是线性的(一维)或多维的。这些数组只要给出相同的结果有什么区别?
我认为数组是内存中相同类型和大小的一组连续地址。这适用于多维数组吗?
#include <iostream>
using namespace std;
int main()
{
int array1[4] = {0, 1, 2, 3};
int array2[1][4] = {0, 1, 2, 3};
int array3[1][2][2] = {0, 1, 2, 3};
cout << array1[0] << endl; // 0
cout << array2[0][0] << endl; // 0
cout << array3[0][0][0] << endl; // 0
cout << array1[2] << endl; // 2
cout << array2[0][2] << endl; // 2
cout << array3[0][1][0] << endl; // 2
return 0;
}
【问题讨论】:
-
不同之处在于访问元素的方式。如果你需要一个 3d 结构,你不想写
array3[ i + size_i * j + size_i * size_j * k]但你想写array3[i][j][k] -
@tobi303 这可能有点虚伪,因为空间位置的潜在好处。
-
@erip 不确定我是否理解您的评论.....
-
二维数组,是数组的数组。它的元素是连续的数组。 3D 数组是 2D 数组的数组。它的元素是连续的二维数组。等等。所以我相信你的直觉是正确的。您应该注意,将所有数组初始化为相同的语法糖。