一、数组定义
数组是相同数据类型的有序数据的集合。其中数据类型可以是 int 型 char 型 float型以及指针、结构体和共用体等类型。有序数据指的是数组中每个数据都有一个相对应的下标,并且是从0开始且依次递增的。带一个下标的为一维数组,带两个下标的为二维数组,带多个下标的为多维数组。
二、一维数组
类型名 数组名[常量表达式];
如:int a[6];
6 代表有6个元素,即数组的长度
-
下标的取值范围是[0,数组长度-1],注意下标不能越界
-
一般来说常量表达式可以是整型常量或符号常量,不能包含变量
错误: int i=10; 正确:#define M 15 int a[i]; int a[M];//符号常量
-
数组元素可以进行赋值和被引用
-
初始化:
类型名 数组名[数组长度]={初值表}; int [5]={1,2,3,4,5}; int [5]={1,2,3};//只对数组前三个元素赋初值 其他两个都为零 int []={1,2,3,4};//系统会认为只有4个元素
三、二维数组
类型名 数组名 [常量表达式1] [常量表达式2]
常量表达式1表示数组第一维的长度(行数)
常量表达式2表示数组第一维的长度(列数)
如:int a[3][4];
代表三行四列,共12个元素
-
初始化
类型名 数组名[行数][列数]={初值表}; int a[3][4]={ {1,2,3,4},{5,6,7,8},{9,10,11,12}}; int a[3][4]={ {3},{2},{5}};//只对每一行第一列赋初值
-
在定义数组时行数可以省略,但列数不能省略,下面是等价的
int a[2][3]={3,5,7,9,11,13}; int a[ ][3]={3,5,7,9,11,13}; int a[ ][3]={ {3,5,7},{9,11,13}};
四、字符数组
字符数组也分为一维数组和二维数组。
1.一维字符数组
char 数组名[常量表达式];
如:char str[5];
- 初始化
char 数组名[常量表达式]={初值表};
char str[6]={'C','h','i','n','a','\0'};
-
若初值表中初值的个数小于字符数组的长度,多余的元素为"\0",初值为0。因为字符"\0"代表整数0,也就是ASCII码为0的字符。但"\0"不是字符’0’,字符’0’的ASCII码值为48.
-
当字符数组里是一个连续的字符串时,数组的长度应为数组元素个数+1,因为必须要加上"\0"
char str[6]={'C','h','i','n','a','\0'}; 等价于char str[6]={"China"};
2.二维字符数组
char 数组名[常量表达式1][常量表达式2];
如:char str[5][10];
-
初始化
char book[4][10]={"hello","the","world","mengyuan"};