以下定义语句正确的是()A.int n=5,a[n][n]?

以下定义语句正确的是()
A.int n=5,a[n][n];
B.int a[][3]={{1,2},{3,4},{5,6}};
C.int a[][3];
D.int a[][]={{1,2},{3,4}{5,6}};
淘汰掉D选项其他的我看不大懂
能帮忙解释下吗?
谢谢~

A选项错误:声明语句中下标只能用常数,不能用变量。不能用n,可以写成a[5][5]。
B选项正确:这个声明根据前面的a[][3]的3产生具有3列的二维数组,又根据后面的{}中的内容,生成具有3行的二维数组,相当于int a[3][3]={……},前面那个3是系统根据数据多少自动产生的。这也是c语言设计者留下的一个可以自动填充的空缺。本题目产生的二维数组是:
1 2 0
3 4 0
5 6 0
C选项错误:int a[][3];空缺一个维数没填,后面又没有数据,系统找不到空缺应该是几,从而产生错误。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-07-27
选择C
a是因为数组大小定义不能使用变量
b是因为第一维大小未定义