当前位置:首页C++程序设计 > 正文

C++ 中数组定义,数组与数组下标的含义

作者:野牛程序员:2023-02-24 11:22:35C++程序设计阅读 2769

在 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];


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击