C语言 二维数组的定义
1.二维数组的定义形式
二维数组的一般定义形式为:
类型标识符 数组名[行常量表达式][列常迢表达式];
例如:
int a[3][4],b[2] [3];
定义了两个二维数组,数组a有3行4列共12个元素,而数组b有2行3列共6个元素。
2.说明
(1 )二维数组的逻辑形式虽然由行、列的组成,例如数组a[3][4]的逻辑形式如图所示,但实际上,二维数组元素在内存中也是顺序存放的,排列顺序为“按行存放”,即先顺序存放第一行的元素,再存放第二行……以此类推,如图所示。
第0列 | 第1列 | 第2列 | 第3列 | |
第0行 | a[0][0] | a[0][1] | a[0][2] | a[0][3] |
第1行 | a[1][0] | a[1][1] | a[1][2] | a[1][3] |
第2行 | a[2][0] | a[2][1] | a[2][2] | a[2][3] |
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] |
(2)通过图可知,设有一个mxn的数组x,则第i行第j列的元素x[i][j]在数组中的位置为:i*n+j。(注意:行号、列号均从0开始计数)
(3)其实,C语言对于二维数组,可以理解成数组的数组,即把二维数组看成一个特殊的一维数组。例如有定义int a[3][4];可认为数组a中包含3个元素a[0]、a[1]、a[2],其第一个元素a[0]也是一个数组——包含4个int数据的一维数组,所以该二维数组a是由三个“特殊的”元素组成的一个“特殊的”一维数组。a[0]、a[1]、a[2]分别代表该数组中的三个元素(三行),每行又是一个数组,包含4 个元素。这样的理解对于以后掌握指针的概念非常有好处。
3.多维数组的定义
有了二维数组的定义,多维数组的定义和二维数组差不多,格式为:
类型标识符 数组名[常II表达式1][常量表达式2][常量表达式3]...[常量表达式n];
例如,定义一个三维数组:
int a [2] [3] [2];
声明了一个三维数组,其中,第一个下标取值范围为: 0〜1,第二个下标取值范围为0〜2,第三个下标取值范围为0〜1。数组中共包含2x3x2=12个元素,分别是:
A[0][0][0] A[0][0][1] A[0][1][0] A[0][1][1] A[0][2][0] A[0][2][1]
A[1][0][0] A[1][0][1] A[1][1][0] A[1][1][1] A[1][2][0] A[1][2][1]
多维数组在内存中也是顺序存放的。
如果说一维数组可以理解成数轴上的一段范围,每个元素代表数轴中的一个刻度;二维数组可以理解成表格,或平面直角坐标系的一段空间;三维数组则可以理解成有x轴、y轴、z轴的立体空间。
点击加载更多评论>>