我们知道,在程序设计中,大多数数据都是存放在变量里的。如果我们要处理较多的数据,增加存放数据的空间最简单的方法就是多开设一些变量。然而,变量多了就难以管理了。这就好像一个班级里的学生名字有长有短,即使没有重复的名字,要在一长串名单里找到一个同学的名字也不是件容易的事情。于是,最方便的方法就是给同学们编上学号了,把名单按学号排列好以后,查找起来只要找学号就可以了。因为数字的排列是从小到大的,是有序的,所以查找起来要比在一堆长短不一的名字中查找要方便多了。
我们受到“学号”的启发,可以给变量也编一个号,把存储着相关内容的变量编在一组内,这就称为数组(Array)。
数组的本质也是变量,所以我们在使用数组之前,必须要声明数组。声明一个数组的语法格式为:
数据类型数组名[常量表达式];
和声明变量类似,数据类型仍然是整型、字符型等等,数组的命名规则和变量的命名规则也一样。在这里,我们要说明两个问题:以前我们说过在语法规则中的中括号表示可有可无的东西,然而在数组名后的中括号有着其独特的含义,而不是可有可无的。数组名后的中括号是数组的一个特征,没有这个特征就不是数组了。数组中每个存放数据的变量称为数组元素。中括号内的常量表达式称为数组的大小,即元素的个数。例如int a[5];这句语句就是声明了一个可以存放五个整型数据的数组,它所能存储的数据相当于五个整型变量。
电脑必须在程序执行之前就已经知道数组的大小,因此中括号内只能是一个常量表达式,而不能含有变量。
通过实验,我们知道我们无法根据程序运行的实际情况来声明一个数组的大小。所以,为了保证程序有足够的存储空间和正常运行,我们尽量要声明一个足够大的数组。要注意,足够大不是无穷大。比如我们要存放一个班级学生的成绩,我们声明一个大小为70的数组是足够大,但是声明一个大小为1000的数组却是不必要的浪费。
我们知道,变量在声明的同时可以进行初始化。同样地,数组在声明的时候进行初始化,声明并初始化数组的语法格式为:
数据类型数组名[常量表达式]={初始化值1,初始化值2,……初始化值n};
在初始化数组时,大括号中的值的个数不能大于声明数组的大小,也不能通过添加逗号的方式跳过。但是初始化值的个数可以小于声明数组的大小,此时仅对前面一些有初始化值的元素依次进行初始化。比如:
int array1[3]={0,1,2}; //正确
int array2[3]={0,1,2,3}; //错误,初始化值个数大于数组大小
int array3[3]={0,,2}; //错误,初始化值被跳过
int array4[3]={0,1,}; //错误,初始化值被跳过(即使是最后一个元素,添加逗号也被认为是跳过)
int array5[3]={0,1}; //正确,省略初始化最后一个元素