C++数组:一维、二维、多维数组的运用

一. 数组的定义

1. 一维数组

语法:type arrayName[size];

其中type是数组元素的类型,如int、double、char等;arrayName是数组的名称,由程序员自行命名;size是数组的大小,它必须是一个常量表达式,表示数组中元素的个数。

int numbers[5];       // 定义一个包含5个整数元素的数组
char characters[10];    // 定义一个包含10个字符元素的数组

2. 初始化

在定义数组时可以进行初始化。完全初始化时,需要提供与数组大小相同数量的初始值。

int numbers1[3] = {1, 2, 3};

部分初始化时,未初始化的元素会被自动初始化为默认值(对于基本类型,如int为0,char为'\0'等)。

int numbers2[5] = {1, 2};  // 后面三个元素初始化为0

不指定数组大小的初始化(C++11及以上)

在初始化数组时提供了初始值列表,可以省略数组大小,编译器会根据初始值的数量自动确定数组大小。

int numbers3[] = {1, 2, 3, 4};  // 数组大小为4

二. 数组的运用

1. 元素访问

通过索引(下标)来访问数组元素,索引从0开始,最大索引为size - 1。

int numbers[5] = {1, 2, 3, 4, 5};
std::cout << numbers[2] << std::endl;  // 输出3

数组越界问题,如果访问的索引超出合法范围,会导致未定义行为,可能会使程序崩溃或产生错误结果。

2. 数组遍历

可以使用for循环来遍历数组元素。

int numbers[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
    std::cout << numbers[i] << " ";
}
std::cout << std::endl;

在C++11及以上版本中,还可以使用基于范围的for循环,它更加简洁。

int numbers[5] = {1, 2, 3, 4, 5};
for (int num : numbers) {
    std::cout << num << " ";
}
std::cout << std::endl;

3. 作为函数参数

数组作为函数参数时,通常会传递数组名和数组大小。

void printArray(int arr[], int size) {
    for (int i = 0; i < size; i++) {
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;
}
int main() {
    int numbers[5] = {1, 2, 3, 4, 5};
    printArray(numbers, 5);
    return 0;
}

三. 多维数组

1. 二维数组

定义语法:type arrayName[size1][size2];

其中size1表示第一维(通常理解为行数)的大小,size2表示第二维(通常理解为列数)的大小。

int matrix[3][4];  // 定义一个3行4列的二维整数数组

2. 初始化:可以按行进行初始化。

int matrix1[2][3] = {
    {1, 2, 3},
    {4, 5, 6}
};

也可以不按行初始化,但要注意元素的顺序。

int matrix2[2][3] = {1, 2, 3, 4, 5, 6};

3. 二维数组的访问与遍历

访问二维数组元素需要使用两个索引,分别对应行和列。

int matrix[2][3] = {
    {1, 2, 3},
    {4, 5, 6}
};
std::cout << matrix[1][2] << std::endl;  // 输出6

遍历二维数组通常使用嵌套的for循环。

for (int i = 0; i < 2; i++) {
    for (int j = 0; j < 3; j++) {
        std::cout << matrix[i][j] << " ";
    }
    std::cout << std::endl;
}

4. 更高维数组(如三维数组)

定义语法:type arrayName[size1][size2][size3];

int cube[2][3][4];  // 定义一个三维数组

初始化和访问方式与二维数组类似,需要更多的索引来定位元素,通常使用多层嵌套的for循环来遍历。

int cube[2][3][4];
for (int i = 0; i < 2; i++) {
    for (int j = 0; j < 3; j++) {
        for (int k = 0; k < 4; k++) {
            cube[i][j][k] = i * j * k;
        }
    }
}
for (int i = 0; i < 2; i++) {
    for (int j = 0; j < 3; j++) {
        for (int k = 0; k < 4; k++) {
            std::cout << cube[i][j][k] << " ";
        }
        std::cout << std::endl;
    }
    std::cout << std::endl;
}

C++编程语言基础

C++数组:一维、二维、多维数组的运用