以下数组定义语句中,错误的是

A. int a[][3];
B. int a[][3]={1,2,3,4,5,6,7,8,9};
C. int a[2][3]={1,2,3,4,5,6};
D. int a[2][3]={1,2,3};
告诉我为什么D可以这样写。。 A错在哪里。。 D不应该有6个数吗

二维数组a[x][y]可以看做是一个由x个a[y]组成的数组。
如果我们知道y,不知道x,(1)如果有赋的初值,可以计算出x,是没问题的。
(2)如果没赋初值,计算不出x,计算机没法给这个数组分配空间,所以计算机会认为这样是错的。
但是如果我们知道x,而不知道y,那么计算机无法计算,没法分配空间,计算机会认为是错的。
比如B选项,知道它是由x个a[3]组成,那么根据它的赋值可以得到它的值是这样的a[][3]={{1,2,3},{4,5,6},{7,8,9}},那可以得到是a[3][3]。
A选项没有赋初值,计算机没法计算那个空白值,所以是错的。
D选项这个数组可以成功创建,赋初值可以全部赋值,也可以赋一部分值,那么计算机会把其余值默认为0,所以是没问题的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-07
D默认把三个数放在第一个数组里,后面一个是空的,所以可以。C是最基本的语法。B是根据内容将分组安为3*3的二维数组,只有A因为没有值也没有定义,所以不知道是几*3的一个数组,定义不明确。
第2个回答  2013-06-07
D可以,虽然它缺省,表示赋值个前面几个,后面默认为0
A,c++规定定义数组必须给定大小
希望回答能帮到你,哪里不清楚再问。
第3个回答  2013-06-07
出初始化不满时,系统随机默认值是0,
a错是因为,数组只给了第二维的长度但没有赋值,系统无法推算出一维的长度,而b选项恰好说明了这一点
第4个回答  2013-06-07
qq回答的对