5.1 什么是数组
从语文上来讲,所谓数组,顾名思义,就是“一组数据”成“成组的数据”,或者说是把多个数据合为一体而形成的数据单位。在C语言里,要声明单个int类型的变量,我们需要这样做:
int var;
那么,要声明一大堆,比如5个int类型的变量(好吧,我知道5个不算一大堆,就是举个例子),该怎么办呢?我们不需要5个标识符(变量名),只需要指明这个变量由5个子变量组成就行:
int vars [5];
以上,我们就声明了一个特殊的变量,标识符vars指示或者说代表一个在程序运行时创建的变量,可以更简单地称之为“变量vars”;用方括号“[”和“]”括住的数字是子变量的数量,在这里是5,表明变量vars由5个子变量组成;最左边的int是类型指定符,用于指定所有子变量的类型。
为了描述像vars这种类型的变量,C语言引入了数组类型,简称数组。如图5-1所示,对于每个数组类型的变量来说,它是由一系列在存储器中连续分配的子变量组成的,“连续”的意思是强调它们在存储器里必须按顺序一个挨着一个。在上例中,变量vars是数组类型的变量,它由5个子变量组成。
图5-1 数组类型的变量示意图
然而,人们也经常把数组类型的变量叫作数组。例如,如果我们声明了一个数组类型的变量a,则称之为“数组a”;再比如上例中,数组类型的变量vars简称为数组vars。这是一种习惯性的叫法,约定俗成。当然,为了更清楚地表达出类型和实体两方面的信息,在本书中也称为“数组变量”。
显然,“数组”一词可能是数组类型,也可能指数组类型的变量,但通常可以借助上下文清楚地分辨所指。当然,本书也尽可能地使用“数组类型”和“数组变量”以明确地加以区分。
对于每个数组类型的变量来说,它的子变量称为数组的元素。数组的元素不但要连续分配,一个挨着一个,还必须具有相同的类型,称为数组的元素类型。在上例中,变量vars的元素类型是int。