我知道我可以显式初始化一维数组,如下所示:
int a1d[] = {0, 1, 2, 3, 4, 5};
这个数组将有 6 个元素 -sizeof(a1d) / sizeof(a1d[0])
是这样告诉我的。
我正在尝试使用二维(或更多)维数组来做到这一点:
int a2d[][] = {{0, 1, 2}, {3, 4, 5}};
但 gcc 错误error: array type has incomplete element type
。
从初始化看来,这是一个 2x3 数组,但似乎这是不允许的 - 这是为什么?
相反,我必须指定除一个维度之外的所有维度:
int a2d[][3] = {{0, 1, 2}, {3, 4, 5}};
我明白,如果我要将一个 n 维数组传递给一个函数,那么绝对有必要在函数中指定 n-1 维,正如这个问题所解释的为什么在传递二维数组作为参数时需要指定列大小? https://stackoverflow.com/questions/12813494/why-do-we-need-to-specify-the-column-size-when-passing-a-2d-array-as-a-parameter,但对于显式初始化的情况,这对我来说不太明显。这只是标准的限制,还是我缺少一个令人信服的技术原因?