数组包含给定类型的一些对象,并将这些对象依次存储在连续的内存空间中。每个独立的对象被称为数组的元素(element)。元素的类型可以是任何对象类型,但函数类型或不完整类型不能作为数组元素。
数组本身也是一个对象,其类型由它的元素类型延伸而来。更具体地说,数组的类型由元素的类型和数量所决定。
如果一个数组的元素是 T 类型,那么该数组就称为“T 数组”。例如,如果元素类型为 int,那么该数组的类型就是“int 数组”。然而,int 数组类型是不完整的类型,除非指定了数组元素的数量。如果一个 int 数组有 16 个元素,那么它就是一个完整的对象类型,即“16 个 int 元素数组”。
数组的定义决定了数组名称、元素类型以及元素个数。没有显式初始化操作的数组定义,其语法如下:
类型 名称[元素数量];
元素数量在方括号([])之间,它必须是大于 0 的整数表达式。示例:
这一行代码定义了一个名为 buffer 的数组,它包含 2048 个 char 类型元素。
可以利用 sizeof 运算符获取对象所占内存空间的大小。数组在内存中的空间大小总是等于一个元素的空间大小乘以数组中元素的个数。因此,上述例子中的 buffer 数组,表达式 sizeof(buffer)会产生 2048*sizeof(char)的值。换句话说,buffer 数组占用 2048 个内存字节,因为 sizeof(char)等于 1。
在数组定义中,可以将元素数量指定为一个常量表达式,或者在特定情况下,指定为涉及变量的表达式。采用这两种方式定义的数组分别被称为固定长度数组(fixed-length)和长度可变(variable-length)数组。