目录
一,一维数组
数组是一组相同元素的集合
1,数组的创建
typedef arr_name[const_n] ;
typedef : 表示数组元素的类型 ,普通变量可以使用的类型,数组都可以使用
arr_name : 表示数组名(自定义)
const_n : 是一个常量表达式,用来指定数组的大小
如: int arr[10]
数组元素的类型是int ,数组名是 arr ,数组大小是10,可以存放十个元素
注:创建数组时 [ ] 里要给一个常量表达式才可以,虽然有的标准中可以使用变长数组(VLA),有的编译器还是会报错误的。
2,数组的初始化
1,完全初始化
初始化时,每个元素都赋上值,如:
int arr1[10] = { 1,2,3,4,5,6,7,8,9,10 } ;
2, 不完全初始化
初始化时,只对个别元素,或者前面几个元素初始化
int arr2[10] = { 1,2,3,4,5 } ;
3,指定初始化器初始化(新特性)
提示:数组下标从0开始,下标引用时[4]表示数组第五个元素,[1]表示数组第二个元素 。
//指定初始化数组的某一个元素
int a[10] = { [5] = 6} ;
//把 arr[5] 初始话为 6
//对days数组使用初始化器初始化
int days[12] = { 31 , 28 ,[4] = 31 ,30,31,[1]=29} ;
//输出结果 31,29,0,0,31,30,31,0,0,0,0,0
由此可以看到,前面已经被初始化的元素可以被后面使用初始化器修改,[4] 被初始化后直接从继续开始输出话,这就说明了指定初始化器的两个重要特性。
3.1 特性
1 ,如果指定初始化器后面有更多的值,如该代码片段中[4] =31,30 ,31 。那么后面 的值将会初始化指定元素后面的值。也就是说 days[5]被初始化为30,days[6]被初 始化为31。
2,如果再次初始化指定的元素,那么最后初始化的值将会取代之前的初始化,如:
[1]在前面被初始化为28,但是后面使用初始化器初始化为29,那么days[1]的值就