4.1 数组(2)
作为复合类型的数组
数组之所以被称为复合类型,是因为它是使用其他类型来创建的(C语言使用术语"派生类型",但由于C++(www.cppentry.com)对类关系使用术语"派生",所以它必须创建一个新术语)。不能仅仅将某种东西声明为数组,它必须是特定类型的数组。没有通用的数组类型,但存在很多特定的数组类型,如char数组或long数组。例如,请看下面的声明:
loans的类型不是"数组",而是"float数组"。这强调了loans数组是使用float类型创建的。
数组的很多用途都是基于这样一个事实:可以单独访问数组元素。方法是使用下标或索引来对元素进行编号。C++(www.cppentry.com)数组从0开始编号(这没有商量的余地,必须从0开始。Pascal和BASIC用户必须调整习惯)。C++(www.cppentry.com)使用带索引的方括号表示法来指定数组元素。例如,months[0]是months数组的第一个元素,months[11]是最后一个元素。注意,最后一个元素的索引比数组长度小1(参见图4.1)。因此,数组声明能够使用一个声明创建大量的变量,然后便可以用索引来标识和访问各个元素。
|
| 图4.1 创建数组 |
有效下标值的重要性
编译器不会检查使用的下标是否有效。例如,如果将一个值赋给不存在的元素months[101],编译器并不会指出错误。但是程序运行后,这种赋值可能引发问题,它可能破坏数据或代码,也可能导致程序异常终止。所以必须确保程序只使用有效的下标值。
程序清单4.1中的马铃薯分析程序说明了数组的一些属性,包括声明数组、给数组元素赋值以及初始化数组。
程序清单4.1 arrayone.cpp
下面是该程序的输出: