数组
1 一维数组
1.1 一维数组的定义
类型说明符 数组名[常量表达式]
如:int a[20];
表示数组名为a,此数组有10个元素。
(1)数组名定名规则与变量名相同
(2)数组名后是用方括号括起来的常量表达式,不能用圆括弧
(3)常量表达式表示元素的个数,即数组长度,如a[10],10表示a数组有10个元素下标从0开始最后一个元素下载为9
(4)常量表达式中可以包括常量和符号常量,不能包含变量
1.2 一维数组元素的引用
数组必须先定义后使用,C语言规定只能逐个引用数组元素,不能一次引用整个数组。
如:数组名[下标]
还可以下面这样
a[0] = a[5] + a[7] + a[3 * 2]
1.3 一维数组的初始化
(1)在定义数组时对数组元素赋以初值
如: int a[10] = {1,2,3,4,5,6,7,8,9};
(2)也可以只给一部分元素赋值
如:int a[10] = {0,1,2,3,4};
定义a数组有10个元素,但花括号内只提供5个初值,这表示只给前面5个元素赋初值,后5个元素的值为0。
(3)如果想使一个数组中的全部元素值为0可以写成
如:int a[10] = {0,0,0,0,0,0,0,0,0,0};
不能写成 int a[10] = {0 * 10};
(4)在对全部数组元素赋初值时,可以不指定数组长度
如:int a[5] = {1,2,3,4,5};
可以写成
int a[] = {1,2,3,4,5};
在第二种写法花括弧中有5个数,系统就会据此自动定义a数组的长度为5,但若被定义的数组长度与提供初值的个数不相同,则数组长度不能省略。
2 二维数组
2.1 二维数组的定义
类型说明符 数组名[常量表达式][常量表达式];
如:int a[3][4], b[5][10];
2.2 二维数组的引用
数组名[下标][下标]
b[1][2] = a[2][3] / 2;
2.3 二维数组的初始化
(1)分行给二维数组赋初值
如:int a[3][4] = {{1,2,3,4}, {5,6,7,8}, {9,10, 11, 12}};
(2)可以将所有数据写在一个花括弧内,按数组排列的顺序对各元素赋初值
如:int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
(3)可以对部分元素赋初值
如:int a[3][4] = {{1},{5},{9}};
它的作用是只对各行的第1列的元素赋值,其余元素自动为0,赋初值后数组各元素为
1 0 0 0
5 0 0 0
9 0 0 0
也可以
int a[3][4] = {{1},{0,6},{0,0,11}};
赋初值后
1 0 0 0
0 6 0 0
0 0 11 0
还有
int a[3][4] = {{1},{5,6}};
1 0 0 0
5 6 0 0
0 0 0 0
int a[3][4] = {{1},{},{9}};
1 0 0 0
0 0 0 0
9 0 0 0
(4)如果对全部元素都赋初值则定义数组时,对第一维的彻底可以不指定,但第二维的长度不能省。
如:int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
与下面的定义等价
int a[][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
系统会根据数据总个数分配存储空间,一共12个数据,第行4列,当然可以确定3行,在定义时也可以只对部分元素赋初值而省略第一维的彻底,但应分行赋初值。
如:int a[][4] = {{0,0,3},{],{0,10}};
0 0 3 0
0 0 0 0
0 10 0 0