数组是一种集合数据类型,它由多个元素组成,每个元素都有相同的数据类型,占有相同大小的存储单元,且在内存中连续存放。每个数组有一个名字,数组中的每个元素有一个序号(称为下标),表示元素在数组中的位置,数组的维数和大小在定义数组时确定,程序运行时不能改变。
一维数组的定义形式为:
类型说明符 数组名[常量表达式];
其中,“类型说明符”指定数组元素的类型;“数组名” 的命名规则与变量一样;“常量表达式”的值表示数组元素的个数,必须是一个整数。例如:
float temp[10];
在C程序中,数组元素的下标总是从0开始的,如果一个数组有n个元素,则第一个元素的下标是0,最后一个元素的下标是n-1。例如,在上面定义的temp 数组中,第一个元素是temp[0],第二个元素是temp[1], 依此类推,最后一个元素是temp[9]。 访问数组元素的方法是通过数组名及数组名后的方括号中的下标。例如:
temp[4]= 1.5; //设置上面定义的数组temp的第5个元素值为1.5
程序员需确保访问数组元素时下标的有效性,访问一个不存在的数组元素,可能会导致严重的错误。
定义数组时就给出数组元素的初值,称为初始化,数组的初始化与简单变量的初始化类似。初值放在一对花括号中,各初值之间用逗号隔开,称为初始化表。例如:
int demo[ ]= {1,2,3,5,7,11,13};
对于没有给出数组元素个数而给出了初始化表的数组定义,编译器会根据初值的个数和类型,为数组分配相应大小的内存空间。初始化表中值的个数必须小于或等于数组元素的个数。对于"int tom[10]= {1,2,3,5,7};",前5个数组元素的初值分别为1,2,3,5,7, 后5个元素的初值都为0。
二维数组可视为是一个矩阵,定义形式为:
类型说明符 数组名[常量表达式1][常量表达式2];
其中,“类型说明符”指定数组元素的类型,“常量表达式1”指定行数,“ 常量表达式2”指定列数。例如,可以定义一个二维数组:
int Dim[3][4]; //该二维数组表示3行4列
二维数组可以只对部分元素赋值,未赋值的元素自动取 0 值。这个数组在内存中占用能存放12个int类型元素且地址连续的存储单元。C语言中二维数组在内存中按行顺序存放。可以用sizeof计算数组空间的大小,即字节数。
C 语言中的多维数组基本的定义是以数组作为元素构成的数组,二维数组的数组元素是一维数组,三维数组的数组元素是一个二维数组,以此类推。也就是说,多维数组用的是一个嵌套的定义。