首先解释一下二维数组:
类型说明符 数组名[常量表达式][常量表达式];
例如 float a[2][3] 相当于定义a为2x3的数组
a[0] _____ a[0][0] a[0][1] a[0][2]
a => a[1] _____ a[1][0] a[1][1] a[1][2]
a[2] _____ a[2][0] a[2][1] a[2][2]
那么 int c[][3]={{3},{},{3}};为什么是错的呢?
原因如下:
从int c[][3]={{3},{},{3}}; 可以看出 他的一维数组也为3 相当于 int c [2][3]
c[0][0] c[0][1] c[0][2]
int c[2][3] 则为 => c[1][0] c[1][1] c[1][2]
c[2][0] c[2][1] c[2][2]
但是:
int c[][3]={{3},{},{3}}; 中的{}代表的是 c[1][0] - c[1][2] 这个范围的二维数组,但是{}这里面没有数,相当于空位置。
相当于 c[1][0] - c[1][2] 这个位置没有意义。
所以这个初始化没有意义,所以错误!
若改为:
int c[][3]={{3},{3},{3}};则正确