二维数组的初始化...

看一段代码:
main()
{
int a[][4]={{0,0,3},{},{0,10}};
.......
}
这个初始化有没有错误
那谁能告诉我运行为什么通不过....谁能说出来我久佩服他...
我说...那个...最后一楼的...
a[][4]那个4表示的是列不是行...

绝对错了,不错你扇死我!

二维数组的初始化分为,一种为按行分段初始化,另一种为按行连续初始化。

int a[2][3]={{5,6},{7,8},{9,10}};
这是第一种,
int a[2][3]={5,6,7,8,9,10};
这是第二种。
a这个二维数组一共2行3列共6个存储空间,图形为:

5 6
7 8
9 10
正好占满。
而且C语言默认可以省略行数,但不能省略列数

你看看你的初始化
int a[][4]={{0,0,3},{},{0,10}};
行数省略是没有任何问题的。
但是你是按行分段初始化
第一行0 0 3
第二行
第三行0 10
注意了,你只对其中3行进行了初始化,第4行丢了。
所以a是一个半初始化的数组,C编译系统绝对不承认!
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-25
我刚运行了下,确实运行不了,或许老谭的书这点也没有得到证实吧.int a[][4]={{0,0,3},{0},{0,10}};就是对的.
从一维数组的角度理解吧:第一行你为什么定义成了{0,0,3}而不定义成{,,3},同样你也不能定义成{0,0,3,}二维是同样的道理,如果在这个数的后面还要赋值,就不能为空,如果后面不用再赋值了,就全省略了,从它开始后面代表0比如:int a[3][4]={{1}};本回答被提问者采纳
第2个回答  2007-12-02
这肯定是对的,在C语言中,二维数组中维数下标必须显性写出,不然编译都通不过的。
int a[][4]={{...},{...},{...},.....}是对的,
int a[4][]={{...},{...},{...},{...}}时错的。
第3个回答  2007-12-02
肯定有问题了,不能为空
后面也不相等!
第4个回答  2007-12-02
没有问题 可以这样初始化
相似回答