数组
数组是存放类型相同的对象的容器。这些对象本身没有名字,需要通过其所在位置访问。数组的大小确定不变,不能随意向数组中添加元素。
数组是一种复合类型,声明型如a[d],a为数组名,b为数组维度(说明数组中元素的个数)。
数组初始化
默认情况下,数组的元素被默认初始化。在函数内部定义了某种内置类型的数组,那么默认初始化令数组含有未定义的值。在函数体外部定义了某种内置类型的数组,那么默认初始化令数组含有值为0。
显式初始化数组元素
const unsigned sz = 3; int ia1[sz] = {0, 1, 2}; // sz为常量 int a2[] = {0, 1, 2}; // 数组纬度可以为空。根据数组初始值的个数在编译期间确定数组维度 int a3[5] = {0, 1, 2}; // 等价于a3[] = {0, 1, 2, 0, 0}; string a4[3] = {"Hi", "bye"}; // 等价于a4[] = {"Hi", "bye", ""}; int a5[2] = {0, 1, 2}; // 错误,初始值超过了数组的维度
字符数组的特殊性
当用字符串字面值对字符数组进行初始化时,一定要注意字符串字面值的结尾处还有一个空字符,这个字符会像字符串的其他自负一样被拷贝到字符数组中。
char a1[] = {'C', '+', '+'}; // 列表初始化,没有空字符 char a2[] = {'C', '+', '+', '