为什么不用提多维数组的第一维而需要提其他维度:
int A[][][2]={{{1,2},{3,4}},{{4,5},{5,6}}}; // error
int A[][2][2]={{{1,2},{3,4}},{{4,5},{5,6}}}; // OK
我无法理解这背后的概念或逻辑。
最佳答案
有必要提及二维数组的两个维度,除非它在函数的参数中,或者如果存在初始值设定项,则可以省略第一个维度。
在函数中用作参数时,例如
int 2D_arr[m][n]
转换为
int (*2D_arr)[n]
因此,第一维可以省略。但是,必须存在第二个维度以告诉编译器指针 2D_arr
是指向n
整数 数组的指针。
第二种情况,当存在初始化器时
int A[][2][2]={{{1,2},{3,4}},{{4,5},{5,6}}};
编译器仅使用初始化器的长度来计算第一个维度。其余维度必须在声明时明确指定。
关于c++ - 为什么在声明多维数组时允许省略第一个维度,而不能省略其他维度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33328307/