位置:首页 > 软件操作教程 > 编程开发 > C语言 > 问题详情

C语言 二维数组的定义

提问人:刘团圆发布时间:2020-11-30

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轴的立体空间。


继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部