c语言问题

int b[ ][4]={{1,2},{3,4,5},{21}}; 这个二维数组初始化正确吗?
int a[2][3]={{1},{2},{3,4}}; 这个二维数组定义正确吗?
初始化和定义有什么区别吗?

int b[ ][4]={{1,2},{3,4,5},{21}}; //这个是正确的
int a[2][3]={{1},{2},{3,4}}; //这个初始化不正确
解释:
二维数组定义:数组名【行】【列】
方法1.指名行和列
如:a[2][3]
定义一个两行三列的数组,没有初始化
方法二指定列,行未知。但是必须初始化
所谓初始化就是在定义变量的时候,附带的
把变量赋值。因为这是变量出身以来的第一次
赋值,所以叫做初始化。
例如: int a=3;
数组的初始化比较复杂一点。
大致分为两中
1.一个一个得赋值
例如:int a[2][3]={1,2,3,4,5};
把数组的前五个初始化为1,2,3,4,5
当然第六个没有指定的就是初始化为0了
2.就是一行一行的初始化
例如:int a[2][3]={{1,2},{12,3,4}};
初始化后a的值为
1 2 0
12 3 4
当定义int a[][4]={{1,2,3},{2,3},{1,2,3,4}};
由于定义数组大小的时候没有指定
多少行,但是指定了多少列(就是一行的最大长度)
所必须通过初试化来指定其行数。
行数为初始化数组中的行数
数以上面的int a[][4]={{1,2,3},{2,3},{1,2,3,4}};
等价于int a[3][4]={{1,2,3},{2,3},{1,2,3,4}};
int b[ ][4]={{1,2},{3,4,5},{21}}; //这个是正确的
int a[2][3]={{1},{2},{3,4}}; //这个初始化不正确
是因为a[2][3]指定的行为2
二数据定义中有三行{1},{|2},{3,4}
所以后提示too many initializers(太多的初始值)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-06-16
第一个正确
第二个错误
定义的时候可以对数组进行初始化
初始化也可以和定义分开
定义式分配内存空间
初始化是对变量赋值本回答被网友采纳
第2个回答  2009-06-16
一楼说的对,第二个b不对。

a[2][3]可以解释为2行3列。
相似回答