数组能够储存多个同类型的值。比如可以储存 12 个 short 值用于表示每个月的天数,或者 7 个 float 值表示一周内每天的花销。每个值都储存在一个独立的数组元素中,计算机在内存中依次储存数组的各个元素。
1、创建数组
使用声明语句创建数组。通用格式如下:
typeName arrayName[arraySize];
数据类型 数组名 【 数组元素的个数 】
代码示例如下:
int day_numbers_everymonth[12]
float pay[7]
注意:arraySize 所代表的元素数目,其值必须为整型常数,或者为 const 值,即不能为变量。
2、数组索引
很多时候,对数组的操作实际上是对其各个元素进行操作,即可以单独访问数组元素。
c++ 使用带索引的方括号表示法来指定数组元素,并且索引从零开始编号。
比如:pay[0]指的是 pay 这个数组的第一个元素,而 pay[6] 值得是最后一个元素。
声明一个数组,那么对于数组内的所有元素都进行了声明,这样就创建了大量的变量,当需要使用一系列同类型的变量时,比如 pay,使用数组是一个更好的选择。
3、数组初始化方法
使用大括号{}初始化(列表初始化)。c++ 使用大括号的初始化是一种通用的初始化方法,可用于所有类型。
1、初始化数组时,可省略等号:
float pay[7] {3.2, 5.3, 6.0, 3.1, 6.4, 4.4, 5.3};
2、可不在大括号内加入数值,这样所有元素都设置为零:
float pay[7] {};
3、列表初始化禁止缩窄转换:
int pay[7] {3.2, 5.3, 6.0, 3.1, 6.4, 4.4, 5.3};
// 不能通过编译,因为浮点数转换为整型是缩窄操作
char a[] {'h',12000, 'b'};
// 不能通过编译,因为 char 类型为 8 位字符,12000 超过了char 的取值范围
char b[] {'h',121,'b'};
// 可以编译,121 未超过 char 取值范围
4、数组初始化规则
1、只有在定义数组时才能使用初始化,以后就不能了,也不能将一个数组赋给另一个数组。
float pay[7] {3.2, 5.3, 6.0, 3.1, 6.4, 4.4, 5.3}; // 符合语法
int a[4];
a[4] = {4,3,2,5}; // 不符合语法,不能初始化
a = pay; // 不符合语法,不能赋值
2、初始化数组时,提供的值可以少于数组的元素数目,即只对数组靠前的部分进行初始化,那么其它元素都将被编译器设置为 0。
float pay[7] {3.2, 5.3};
3、想要将所有元素都设置为 0,那么只需要将第一个元素初始化为 0。
float pay[7] {0};
4、如果初始化数组时方括号为空,c++ 编译器将计算元素个数,并且该数组的元素个数就确定了:
float pay[ ] {3.2, 5.3, 6.0, 3.1, 6.4, 4.4, 5.3};