首页 理论教育C语言实用教程:二维数组的定义和初始化

C语言实用教程:二维数组的定义和初始化

【摘要】:图4.3二维数组编译程序将开辟3×4=12 个连续存储单元,按行连续存放数组a 的12 个元素。图4.4二维数组在存储器中的存储顺序2.二维数组的初始化二维数组初始化和一维数组初始化的方法基本相同,也可以在定义时赋以初值。不分行给二维数组所有元素赋以初值,即所有元素的初值写在同一对大括号内。

1.二维数组的定义

格式:

功能:按指定“数据类型”定义二维数组,有“行长度×列长度”个元素。

说明:

(1)数组类型可以是任何基本数据类型,也可以是后面将要介绍的指针、结构等,数组名用标识符表示。

(2)两个整型常量表达式分别表示数组的行数和列数,行列下标值均从0 开始。

(3)数组元素占有连续的存储空间,各元素按行顺序排列。

例如:

(1)表示定义a 为3×4 的整型二维数组,有12 个元素,各元素表示如下:

(2)二维数组a 的每一行可看作一个一维数组,常用a[i]表示第i 行构成的一维数组名。这样,a[3][4]也可以看成有3 个元素的一维数组:a[0]、a[1]、a[2];而每个一维数组又各有4个int 型数据元素,如图4.3 所示。

图4.3 二维数组

(3)编译程序将开辟3×4=12 个连续存储单元,按行连续存放数组a 的12 个元素。存储方式如图4.4 所示。数组名a 代表数组a 的首地址

图4.4 二维数组在存储器中的存储顺序

2.二维数组的初始化

二维数组初始化和一维数组初始化的方法基本相同,也可以在定义时赋以初值。

格式:

(www.chuimin.cn)

功能:定义二维数组,并给每个数组元素赋以初值,常用方式有以下几种:

(1)分行给所有元素赋值。例如:

在大括号内部套用大括号,将各行分开。内层第一对大括号中的初值1,2,3 是第0 行的3 个元素。第二对大括号中的初值4,5,6 是第1 行的3 个元素。

(2)不分行给二维数组所有元素赋以初值,即所有元素的初值写在同一对大括号内。例如:

(3)如果只对每行的前几个元素赋初值,则所有未赋初值的元素默认为0(整型数组是0,实型数组是0.0,字符型数组是‘\0’),例如:

结果:

(4)如果只对前几行的前几个元素赋初值,则所有未赋初值的数组元素默认为0。

例如:

结果:

(5)如果对二维数组的全部元素赋初值,可省略第一维的定义,但不能省略第二维的定义。例如:

(6)如果只对部分数组元素赋初值,又省略了第一维的定义,那么应分行赋初值,即使某行没有初值,也要保留该行的一对大括号。例如:

编译时系统将自动确定数组a 为4 行4 列。