数组(array)是一种数据格式,存储多个相同类型的值。元素数目必须是整型常数、const值、常量表达式,即编译时确定的。本章后面会介绍如何使用 new 来避开这种限制。

示例:

  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. int list[3] = {20, 30, 5};
  6. cout << "Size of list = " << sizeof(list) << endl;
  7. cout << "Size of one element = " << sizeof(list[0]) << endl;
  8. }

输出:

Size of list = 12 Size of one element = 4

4.1.1 程序说明

如果将 sizeof 运算符用于数组名,得到整个数组的字节数;如果用于元素,得到单个元素的长度(单位字节)。这表明,list 是一个数组,而 list[0] 只是一个 int 变量。

4.1.2 数组的初始化规则

只能在定义数组时才能使用初始化,以后就不能用了。例如:

  1. int list1[4] = {3,6,8,10}; //OK
  2. int list2[4];
  3. list2[4] = {1,2,3,4}; //not allowed
  4. list2 = list1; //not allowed

可以只对一部分初始化,其他将自动为0:

  1. int list1[5] = {0}; //全为0
  2. int list2[5] = {1,2,3}; //前三个赋值,其余两个自动为0

计算数组个数的一个方法:

  1. int list[5] = {1,2,3,4,5};
  2. int num = sizeof(list) / sizeof(int);

4.1.3 C++11数组初始化

示例:

  1. int list1[4]{1,2,3,4}; //C++11方式
  2. int list2[4] = {}; //全为0
  3. int list3[4]{}; //全为0

C++标准模板库(STL)提供了数组替代品:vector模板类。C++11新增 array 模板类。