[C语言程序设计]24.下列选项中不能正确定义并初始化二维数组的是_____。 A)int a[

[C语言程序设计]24.下列选项中不能正确定义并初始化二维数组的是_____。
A)int a[ ][3]={20,34,56,78};
B)int a[2][3]={20,34,56,78};
C)int a[2][ ]={20,34,56,78};
D)int a[ ][3]={{20,34},{56,78}};

A)int a[ ][3]={20,34,56,78}; //可确定数组为a[2][3],逐个赋值,一行3个数,其余为0
B)int a[2][3]={20,34,56,78};//容易明白
C)int a[2][ ]={20,34,56,78}; //无法确认一行几个数,即列数
D)int a[ ][3]={{20,34},{56,78}};//逐行赋值,容易确认追问

AC还是不太懂,A后面如果补5个零,那不就变成[3][3]?

追答

A)int a[ ][3]={20,34,56,78}; //就因为多个78所以是2行,如果没78就是一行,c编译器是按最小占用空间的原则分配
C)int a[2][ ]={20,34,56,78}; //只能确认2行,编译器无法确认一行有几个数,即列数
最简单的就是记住二维数组的列数是不能空缺,系统自动计算不了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-06-26
c,因为二维数组的最后一个维数不能为空,第一个可以。
第2个回答  2015-06-26
答案是c 老说我字数少 但疼追问

理由