一、定义
1.1 一维数组
一维数组的定义方式如下:
类型说明符 数组名[常量表达式];
例如:
int a[5];
它定义了一个整型数组,数组名为a,数组名a除了表示该数组之外,还表示该数组的首地址。
此时数组a有5个元素,每个元素都是int型变量,而且它们在内存中的地址是连续分配的。也就是说,int型变量占4字节的内存空间,那么5个int型变量就占20字节的内存空间,而且它们的地址是连续分配的。
二、初始化
2.1 一维数组
2.1.1 完全初始化(定义数组时给所有元素赋初值)
int a[5]={1,2,3,4,5};
2.1.2 不完全初始化(只给一部分元素赋值)
int a[5]={1,2};
这表示只给前面两个元素a[0]、a[1]初始化,而后面三个元素都没有被初始化。不完全初始化时,没有被初始化的元素自动为0。
需要注意的是,“不完全初始化”和“完全不初始化”不一样。如果“完全不初始化”,即只定义“int a[5]”而不初始化,那么各个元素的值就不是0了,所有元素都是垃圾值。
可以使用"int a[5]={0}"给数组中全部元素清零,数组中每个元素都是零。
2.1.3 不定义数组长度
如果定义数组时就给数组中所有元素赋初值,那么就可以不指定数组的长度,因为此时数组的个数已经确定了。
例如:
int a[5] = {1, 2, 3, 4, 5};
可以写成:
int a[] = {1, 2, 3, 4, 5};
第二种写法的花括号中有5个数,所以系统会自动定义数组a的长度为5。但是要注意,只有在定义数组时就初始化才可以这样写。如果定义数组时不初始化,那么省略数组长度就是语法错误,比如:
int a[];