【C 语言】二维数组
二维数组的定义和引用
前面的博客介绍了一维数组只有一个下标,称为一维数组,其数组元素也称为单下标变量。我们在实际问题当中很多量是由二维或者是多维的,因此 C 语言允许构造了多维数组。多维数组的元素有多个下标,以标识它的数组中的位置,所以也称为多下标变量。本片文章介绍的是二维数组。
1、二维数组的定义
二维数组的声明与一维数组相同,一般形式如下:
类型说明符 数组名 [常量表达式 1] [常量表达式 2];
其中 "常量表达式 1" 被称之为行下标,"常量表达式 2" 被称之为是列下标。二维数组下标的取值范围,如下所示:
行下标的取值范围是:0~n-1。
列下标的取值范围是:0~m-1。
二维数组最大元素下标识:array[n-1][m-1]。
例如:定义一个 2 行 3 列的整型数组
int array[3][3]
上述代码声明了一个 3 行 3 列的二维数组,其 数组名 是 array,其下标变量的类型为整形。
如下图所示:该数组的下标变量一共有 3x3 个。
在 C 语言中,二维数组是按行排列的,即按行顺序存放,先存放 array[0] 行,再存放 arrar[1] 行,接着存放 array[2] 行。每行有 3 个元素,也是其依次存放的。
注意:在 C 语言中,二维数组是按行排列的。
2、二维数组元素的引用
二维数组元素的引用一般形式如下:
数组名[下标][下标];
说明:二维数组的下标可以是 整形常量 或 整形表达式。
例如: a[3][4];表示 a 数组三行四列的元素。
下标变量和数组说明在形式中有些相似,但这两者具有完全不同的含义。数组说明的方括号中给出的是某一维的长度,即可取下标的最大值;而数组元素中的下标是该元素在数组中的位置标识。前者只能是常量,后者可以是常量,变量或表达式。
注意:不管是 行下标 还是 列下标,其中的索引值都是从 0 开始的。
注意:和一维数组是一样的,我们都需要注意下标越界的问题。
练习 1:一个学习小组有 5 个人,每个人有三门课的考试成绩。求全组分科的平均成绩和 各科总平均成绩。
如下代码所示:
当上面的代码被编译和执行时,可能它会产生下列结果:
二维数组的初始化
二维数组初始化也是在类型说明时给各下标变量赋以初值。二维数组可按行分段赋值, 也可按行连续赋值。下面是一个带有 3 行 4 列的数组:
按行分段赋值可写为。
按行连续赋值可写为,注意:这个与上面初始化是等同的。
访问二维数组的元素
练习 2:获取每行每列数组元素的值
如下代码所示:
当上面的代码被编译和执行时,它会产生下列结果:
对二维数组初始化还需注意几点
1. 可以只对部分元素赋值,未赋值的元素自动取"0"值。例如:
是对每一行的第一列元素赋值,未赋值的元素的值为 0。赋值后各元素的值为:
2. 如果对全部元素赋值,那么第一维的长度可以不给出。例如:
还可以写成为是:
注意:行 是可以进行省略的,但是 列 不能进行省略。
3. 二维数组可以看作是由一维数组嵌套而成的;如果一个数组的每个元素又是一个数组,那么它就是二维数组。当然,前提是各个元素的类型必须相同。根据这样的分析,一个二维数组也可以分解为多个一维数组,C 语言允许这种分解。
例如,二维数组**
a[3][4]
** 可分解为三个一维数组,它们的数组名分别为 a[0]、a[1]、a[2]。这三个一维数组可以直接拿来使用。这三个一维数组都有 4 个元素,比如,一维数组 a[0] 的元素为 a[0][0]、a[0][1]、a[0][2]、a[0][3]。
版权声明: 本文为 InfoQ 作者【泽En】的原创文章。
原文链接:【http://xie.infoq.cn/article/ea427c5c18c973f3ebcd66bac】。文章转载请联系作者。
评论