一、数组
数组是由类型名、标识符和维数组成的复合数据类型,类型名规定了存放在数组中的元素类型,维数则指定数组中包含的元素个数。
数组的维数必须用值大于等于1的常量表达式定义。此常量表达式只能包含整型字面值常量、枚举常量或者用常量表达式初始化的整型const对象。非const变量以及要到运行阶段才知道其值的const变量都不能用于定义数组的维数。
C++虽然不允许定义长度为0的数组变量,但明确指出,调用new动态创建长度为0的数组是合法的。
1、数组的长度是固定的,与vector类型不同,数组不提供push_back或者其他的操作在数组中添加新元素。如果必须添加新元素,程序员必须自己管理内存,重新分配一个新的内存空间更大的数组,复制所有元素到新的数组。
2.数组如果没有显示提供元素初值,则数组元素会像普通变量一样初始化:
- 在函数体外定义的内置数组,其元素均初始化为0;
- 在函数体内定义的内置数组,其元素无初始化,其值是不确定的;
- 不管数组在哪里定义,如果其元素为类类型,则自动调用该类的默认构造函数进行初始化;如果该类没有默认构造函数,则必须为该数组的元素提供显式初始化。
3. 特殊的字符数组
字符数组既可以用一组由花括号括起来、逗号隔开的字符字面值进行初始化,也可以用一个字符串字面值进行初始化。
字符串字面值包含一个额外地空字符(null)用于结束字符串。
当使用字符串字面值来初始化创建的新数组时,将在新数组中加入空字符:
1 char ca1[] = {'C' , '+' , '+'}; // no null 2 char ca2[] = {'C' , '+' , '+' , '