10.1 数组

回忆一下,数组(array)由一系列类型相同的元素构成。可以使用声明来告诉编译器您需要一个数组。数组声明(array declaration)中包括数组元素的数目和元素的类型。编译器根据这些信息创建合适的数组。数组元素可以具有同普通变量一样的类型。考虑下面数组声明的例子:

阅读 ‧ 电子书库

广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元

方括号([])表示candy和其他两个标识符均为数组,方括号内的数字指明了数组所包含的元素数目。

要访问数组中的元素,可以使用下标数字来表示单个元素。下标数字也称索引(index),是从0开始计数的。因此,candy[0]是数组candy的首元素,candy[364]是第365个元素,也就是最后一个元素。这些我们已经比较熟悉了,以下将介绍一些新内容。

10.1.1 初始化

程序中通常使用数组来存储数据。例如,含有12个元素的数组可以用来存储12个月份的天数。在这种情况下,程序开始时就初始化数组比较方便,下面介绍初始化方法。

您已经知道可以在单个数值变量(有时也称为标量)的声明中用表达式来初始化它,如下所示:

阅读 ‧ 电子书库

此处,表达式中的PI已定义为宏。C为数组的初始化引入了以下新语法:

阅读 ‧ 电子书库

从以上例子中可以看出,可以使用花括号括起来的一系列数值来初始化数组。数值之间用逗号隔开,在数值和逗号之间可以使用空格符。这样,首元素(power[0])赋值为1,依次类推(如果您的编译器不支持这种初始化,提示这是一个语法错误,那么您使用的是ANSI以前的编译器。在数组定义之前添加关键字static可解决此问题。第12章“存储类、链接和内存管理”将详细讨论这个关键字)。程序清单10.1的功能是打印出每月的天数。

程序清单10.1 day_mon1.c程序

阅读 ‧ 电子书库

输出结果如下:

阅读 ‧ 电子书库

这个程序并不完善,但它每4年仅打错一个月份的天数。程序使用括在花括号里的一系列数值对days[]进行初始化,数值之间用逗号分开。

注意本例采用标识符常量MONTHS来代表数组大小。这是一种常用的也是我们所推荐的做法。如果要采用每年13个月的历法,只用修改#define语句即可,无须查找并修改程序中每一个使用数组大小的地方。