可能的重复:
如何在 C++ 中使用数组?
简而言之,C++ 中的多维数组是数组的数组,还是只是一个表现得像多维的数组?
我的一位朋友解释说,C++中的数组只是常量指针,多维数组也是常量指针,其元素由多个索引寻址(即它们是指向一个大数组的指针,并且计算元素的偏移量)使用多个索引)。
我相信多维数组是指向其他数组的指针的单维数组,因为当将多维数组作为函数参数传递时,我经常使用以下语法:
void copy_matrix(int ** matrix);
如果没有,是否可以在 C++ 中创建一个数组的数组,并在编译时为每个子数组赋值 - 相当于以下语句的语义:
int line[2][2];
line[0] = {100, 100};
line[1] = {200, 200};
上述语句会产生编译时错误。我想出的一个快速(未经测试的)技巧是:
int line[2][2];
void assign(int index, int * point, int length) {
for (int i = 0; i < length; i++) {
line[index][i] = point[i];
}
}
assign(0, {100, 100}, 2);
assign(1, {200, 200}, 2);
然而,我相信一定有一种更优雅的方式来达到同样的结果。我希望能够清楚地理解这些概念,并且欢迎任何意见。