【发布时间】:2016-02-09 10:46:00
【问题描述】:
根据帖子,
Passing a 2D array to a C++ function
int array[10][10];
void passFunc(int a[][10]) // <---Notice 10 here
{
// ...
}
passFunc(array);
从编译器内部的角度来看,为什么需要这个更高的维度。
【问题讨论】:
-
如果您将二维数组视为平面一维数组。您认为它可能会如何被编入索引。
-
只要索引是问题,实现 n-d 数组 "ptr+ d1*size+d2*size+.....+index" 也可以工作
-
因为当你尝试访问
a[2][0]时,第二维需要知道在哪个内存位置找到这个元素(它在a+(2*10)+0) -
@tobi303;为什么必须在声明
int a[10];中提供长度? -
@hacks 这是一个不同的问题,答案是:告诉编译器它应该分配多少内存。