1
C语言程序设计
1.5.2.3 4.2.3 二维数组的初始化

4.2.3 二维数组的初始化

由于二维数组是按行存储的,因此二维数组的初始化也是按行进行的。

(1)对二维数组的全部元素赋初始值。

以例4-2为例,可在定义时就将二维数组所描述的冰山高度赋给变量ice。

img346

在上面的式子中,赋初值是按5个一维数组的顺序一个一个进行的。最先给ice[0]的7个元素按序号赋值,然后给ice[1]的7个元素依次赋值,依此类推。

赋过初值的二维数组ice中的元素如图4.2.3所示。

img347

图4.2.3 赋过初值的数组ice

另外,可以对ice按行连续赋初值:

img348

这与前面赋初值时将初值按行用{}括起完全等价,但将初值按行括起的方式更清晰明了,可读性更好,也更不容易出错。

(2)部分赋初值

与一维数组相同,如果对二维数组部分赋初值,则剩余元素的值也将被初始化为0。

例如,int a[3][3]={{1},{2,3}};

赋值后的元素值为1,0,0,2,3,0,0,0,0。

例如,int a[3][3]={1,2,3};

赋值后的元素值为1,2,3,0,0,0,0,0,0。

(3)在对数组的全部元素赋初值时,C语言规定可以省略第一维的长度,但不能省略第二维的长度。

例如,int a[2][2]={1,2,3,4};可以写成int a[][2]={1,2,3,4};

C语言会自动确定a的第一维的长度。但不能写成“int a[2][]={1,2,3,4};”。

下面计算例4.4中冰山的体积。思路是累加冰山各格的高度,再乘以每格的面积即可得到冰山的体积。

为此,定义一个整型变量totalHeight,用两重计数型循环来累加总高度。参考程序如下:

img349

常见的编程错误4.2

img350 用a[x,y]引用一个二维数组元素a[x][y]是常见的错误。

img351 在for循环计数器中没有使用足够大的条件表达式数值来循环遍历所有的数组元素。