C++语言提供了两种类似于vector和迭代器类型的低级复合类型——数组和指针(此话出自C++Primer 中文版第四版P109,总觉这话让人看着不舒服……),设计良好的程序只有在强调速度时才在类实现的内部使用数组和指针。
数组元素可以是引用外的任何内置类型或者类类型。
(1)数组的初始化
在没有显示初始化的情况下,数组元素的初始化类似于普通变量:
a. 在函数体外(全局)的定义的内置数组,其元素均初始化为0;
b. 在函数体内定义的内置数组,其元素无初始化;
c. 如果为类类型,不管在哪里定义,都自动调用该类的默认构造函数进行初始化;如果该类没有默认构造函数,则必须为该数组的元素提供显示初始化。
显示初始化的数组不需要指定数组的维数值,编译器会根据列出的元素个数确定数组的长度。
如果指定的数组维数超过了初始化列表里的元素个数,那么剩下的元素若是内置类型就初始化为0,若是类类型就调用该类的默认构造函数进行初始化。
(2)字符数组
字符数组可以用一个字符串字面值进行初始化,也可以用一组花括号括起来、逗号隔开的字符字面值进行初始化,两者的区别是前者包含一个额外的null用于结束字符串,后者则不包含,除非显示包含。如:
1 char ca1[] = {'C', '+', '+'};// not null 2 char ca2[] = {'C', '+', '+', '