问一个c语言里关于多维数组的问题

来源:百度知道 编辑:UC知道 时间:2024/06/18 04:38:52
请看一下这个例子:
static M[3][4]={ {1,2,3},
{4,5,6},
{7,8,9} };
想一下这句语句的结果是什么。(假设数组的起始内存地址是:0100H)现在, 我们再来看一个使用第二种初始化方法的例子。

static int M[3][4]={1,2,3,4,5,6,7,8,9} ;
请想一下它的结果。请注意这两个例子间的差别。

各位大哥帮我解释下多维数组如何进行初始化 在下不胜感激`
回答的都很好 谢谢 `你们``

把两个的打印出来,可能你就明白一半了
1,2,3,0
4,5,6,0
7,8,9,0
这是第一个数组

1,2,3,4
5,6,7,8
9,0,0,0
这是第二个数组

现在我们再来结合讲一下
在二维里。如果用{}里面表示的是一行。元素不够的话,自动默认为0.
也就是第一种情况

如果没有{},那么他将按顺序排列,最终不够的元素默认为0.
也就是第二种情况
楼主稍微想一下就可以了。

还有楼上的讲的错了。
他那种是跟第一种情况一样的。后面没有输入的字,会默认为0.
请楼主上机试一下

1. static int M[3][4]={ {1,2,3},{4,5,6},{7,8,9}};
是按照一行一行来的,先给第一行赋值1,2,3,0,因为每一行有4个元素,然而没有这里没有给最后一个元素赋值,因此它默认为0;其他三行类同;
结果就会是
1,2,3,0
4,5,6,0
7,8,9,0
2. static int M[3][4]={1,2,3,4,5,6,7,8,9} ;
是按照赋值满一行后,再赋值下一行,因此最后一行会空出三个未赋值的元素,未赋值的元素,默认为0
结果就会是
1,2,3,4
5,6,7,8
9,0,0,0

int M[3][4]={0}可以使所有元素都为0,如果想让全部元素为非0,那只能使用二重循环给每个元素赋值
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
M[i][j]=n;//n为非零
}
}