六、数组
6.1 数组定义
类型说明符 数组名 [常量表达式];
其中,类型说明符是任一种基本数据类型或构造数据类型;数组名是用户定义的数组标识符;方括号中的常量表达式表示数据元素的个数,也称为数组的长度。
int a[10]; //整型数组 a, 有 10 个元素
float b[20];
char ch[30]; //字符数组 c, 有 30 个元素
注意点:
(1)数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的;
(2)数组下标从 0 开始计算;
(3)方括号中不能用变量来表示元素个数;
6.2 一维数组
数组元素的引用:数组名[下标]
,其中下标只能为整型常量或整型表达式;如为小数时,C编译将自动取整。C语言只能逐个地使用下标变量,而不能一次引用整个数组。
数组初始化:类型说明符 数组名 [常量表达式] = {值,值,...,值};
其相关说明为:
(1)可以只给部分元素赋初值;当 {} 中值的个数少于元素个数时,只给前面部分元素赋值;
(2)只能给元素逐个赋值,不能给数组整体赋值;
(3)如给全部元素赋值,则在数组说明中,可不给出数组元素的个数。
int a[5] = {1,1,1,1,1}; //正确
int a[5] = 1; //错误
int a[] = {1,2,3,4,5}; //正确
6.3 二维数组
类型说明符 数组名 [常量表达式1][常量表达式2];
其中常量表达式1表示第一维下标的长度,常量表达式2表示第二维下标的长度。
引用:数组名[下标][下标]
初始化:二维数组初始化也是在类型说明时给各下标变量赋以初值。二维数组可按行分段赋值,也可按行连续赋值。其相关说明为:
(1)可以只对部分元素赋初值未赋初值的元素自动取0值;
(2)如对全部元素赋初值,则第一维的长度可以不给出。
(3)数组是一种构造类型的数据:二维数组可以看作是由一维数组的嵌套而构成的。设一维数组的每个元素都又是一个数组,就组成了二维数组。即一个二维数组也可以分解为多个一维数组。
int a[2][3] = {{1,2,3},{4,5,6}}; //分段赋值
int a[2][3] = {1,2,3,4,5,6}; //连续赋值
int a[][3] = {1,2,3,4,5,6};