C++ 中数组定义,数组与数组下标的含义
在 C++ 中,数组是一种数据结构,用于存储一组相同类型的数据。数组中的每个元素都可以通过下标来访问,下标是一个整数,用于指定数组中的元素位置。
数组的定义格式如下:
<数据类型> <数组名>[<数组长度>];
其中,数据类型指定数组中元素的数据类型,数组名是用于标识数组的标识符,数组长度是指定数组中元素的数量。例如,以下代码定义了一个包含 5 个整数的数组:
int numbers[5];
数组下标从 0 开始,也就是说,第一个元素的下标为 0,第二个元素的下标为 1,以此类推。因此,在上述代码中,可以使用 numbers[0]
、numbers[1]
、numbers[2]
、numbers[3]
、numbers[4]
来访问数组中的元素。
数组的下标可以是任何整数表达式,例如常量、变量、表达式等。例如,以下代码将使用变量 i
来遍历数组中的所有元素:
for (int i = 0; i < 5; i++) { cout << numbers[i] << endl; }
在这个循环中,变量 i
从 0 开始递增,直到达到数组长度减 1,遍历了数组中的所有元素,并使用 numbers[i]
访问了每个元素。
在 C++ 中,数组还可以使用初始化列表来初始化。初始化列表是一个用花括号 {}
包围的逗号分隔值列表,用于指定数组中的初始值。例如,以下代码将创建一个包含 3 个整数的数组,并将其初始化为 1、2、3:
int numbers[] = {1, 2, 3};
这个数组的长度将自动计算为 3。
在 C++ 中,数组还可以是多维的。例如,以下代码定义了一个包含 3 行 4 列的二维数组:
int matrix[3][4];
这个数组可以使用两个下标来访问,第一个下标指定行数,第二个下标指定列数。例如,以下代码将给第二行第三列的元素赋值为 5:
matrix[1][2] = 5;
可以使用嵌套的循环遍历多维数组中的所有元素。例如,以下代码将遍历上述 3 行 4 列的二维数组:
for (int i = 0; i < 3; i++) { for (int j = 0; j < 4; j++) { cout << matrix[i][j] << " "; } cout << endl; }
这个嵌套循环将遍历每个元素,并将其打印出来。
在 C++ 中,数组下标从 0 开始计数。这意味着第一个元素的下标为 0,第二个元素的下标为 1,以此类推。例如,以下代码定义了一个包含 5 个整数的数组,并将第三个元素的值赋为 7:
int numbers[5]; numbers[2] = 7;
在 C++ 中,数组的大小可以是一个常量表达式或一个常量值,但不能是变量。例如,以下代码定义了一个包含 10 个整数的数组:
const int size = 10; int numbers[size];
这里使用了常量 size
来指定数组的大小。
注意,如果您尝试使用变量来指定数组的大小,将会导致编译错误:
int size = 10; int numbers[size]; // 错误:数组大小不是一个常量表达式
因为 size
是一个变量,而不是一个常量表达式,所以不能用来指定数组的大小。
在 C++11 中,可以使用 constexpr
关键字来声明一个常量表达式,这样就可以在数组大小的声明中使用变量了。例如:
constexpr int size = 10; int numbers[size]; // OK,size 是一个常量表达式
这里使用 constexpr
关键字来声明 size
是一个常量表达式,所以可以用它来指定数组的大小。
在 C++ 中,可以使用 new
运算符动态分配数组,语法如下:
type* pointer = new type[size];
其中,type
是数组元素的类型,size
是数组的大小。这将在堆上分配一个大小为 size * sizeof(type)
的连续内存块,并返回指向该内存块的指针。
例如,以下代码动态分配了一个包含 10 个整数的数组:
int* numbers = new int[10];

- 上一篇:流程图的概念及流程图描述
- 下一篇:C++中数组的读入与输出