简单C语言问题

请问二维数组a[m][n]的m,n哪一个代表行和列,关于二维数组具体说下,复制也行.

m为行,n为列

一、二维数组的定义
二维数组的定义格式为:
类型说明符 数组名[常量表达式1][常量表达式2];
其中常量表达式1表示第一维下标的长度,说明数组的行数,常量表达式2 表示第二维下标的长度,说明数组的列数。
例如:
int a[3][4];
该声明定义了一个3行4列的二维数组,数组名为a,该数组的下标变量共有3×4=12个,如图5-4所示。
a[0][0]a[0][1]a[0][2]a[0][3]
a[1][0]a[1][1]a[1][2]a[1][3]
a[2][0]a[2][1]a[2][2]a[2][3]

图5-4 二维数组
二维数组在概念上是二维的,其下标在两个方向上变化,即行和列。从图中可以看出,二维数组的第一维决定行数,第二维决定列数。在内存中是逐行存放,即放完一行之后顺次放入第二行,如图所示。
a[0][0]a[0][1]a[0][2]a[0][3]a[1][0]a[1][1] … a[2][3]

二维数组的存储
数组a的定义声明为int类型,该类型占两个字节的内存空间,所以数组共占空间:12*2=24个字节。
二、二维数组的初始化
同一维数组相同,二维数组也可以进行初始化操作,即在数组定义的同时给各下标变量赋以初值。下面是几种不同的初始化方式:
1、对所有数组元素初始化:
int a[3][4]={{80,75,92,77},{61,65,86,71},{59,63,70,90}};
赋值情况如图5-6所示。
80759277
61658671
59637090

图5-6 二维数组的赋值
等价于:
int a[3][4]={80,75,92,77,61,65,86,71,59,63,70,90};
当为所有元素初始化时会自动按行赋值,因此可以省略区分行的{}。
以上两种形式还可以进行简化,当所有元素有初值时可以省略第一维,即行号:
int a[ ][4]={80,75,92,77,61,65,86,71,59,63,70,90};
默认值为3,取所有可能数据的最小数。
2、只对部分元素赋初值,未赋初值的元素自动取0值。
例如:
int a[3][4]={{10},{20},{30}};
是对每一行的第一列元素赋值,未赋值的元素取0值。 赋值后各元素的值为:
10 0 0 0
20 0 0 0
30 0 0 0
而若有 int a[3][4]={{10}{0,20},{0,0,30}};
赋值后的元素值为:
10 0 0 0
0 20 0 0
0 0 30 0
以上两种形式的行数已经确定,这种情况下也可以省略第一维:
int a[][4]={{10},{20},{30}};
int a[][4]={{10}{0,20},{0,0,30}};
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-07-29
假设一下 m = 1 n = 5 m++ n++ (之所以m等于1 n等于5 是让你好区分 以免看混)
1 5, 1 6, 1 7, 1 8, 1 9
2 5, 2 6, 2 7, 2 8, 2 9
3 5, 3 6, 3 7, 3 8, 3 9
不用再继续写了吧 我理解就这个意思没太多内容 至于那些书本上咬文嚼字的东西网上到处都是 正好锻炼下你查阅资料的能力。
第2个回答  2010-07-29
m 是行,
n是列
二维数组是多个一维数组
第3个回答  2010-07-29
m是行,n是列。
就是n一个循环之后,m才加1
第4个回答  2010-07-29
m代表行,N代表列,行列都从0开始,所以为0-m-1行,0-n-1列
第5个回答  2010-07-29
当然是m是行,n是列了。。
其实二维数组就是多个一维数组,,它的存储方式是先第一行,后面接着是第二行......
相似回答