静态二维数组在编译时分配内存,适用于大小固定的情况,可逐行或扁平化初始化;2. 动态二维数组在运行时分配内存,常用指针数组实现,使用new分配行和列,需手动释放内存。

在C++中创建二维数组有多种方式,主要分为静态数组和动态数组两大类。根据使用场景选择合适的方法,可以提高程序的效率和可读性。
静态二维数组的定义与初始化
静态二维数组在编译时分配内存,适用于大小已知且固定的情况。
定义语法:
int arr[行数][列数];常见初始化方式:
立即学习“C++免费学习笔记(深入)”;
- 逐行初始化:
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}}; - 扁平化初始化(按顺序填入):
int arr[2][3] = {1, 2, 3, 4, 5, 6}; - 部分初始化,其余自动设为0:
int arr[2][3] = {{1, 2}}; // 第二行全为0 - 全零初始化:
int arr[2][3] = {}; // 所有元素为0
动态二维数组的创建方法
当数组大小在运行时才能确定时,需使用动态内存分配。
方法一:使用指针数组(推荐)
int** arr = new int*[rows];for (int i = 0; i arr[i] = new int[cols];
}
初始化示例:
for (int i = 0; i for (int j = 0; j arr[i][j] = i * cols + j;记得释放内存:
for (int i = 0; i delete[] arr[i];delete[] arr;
方法二:使用一维数组模拟二维(节省开销)
int* arr = new int[rows * cols];// 访问 arr[i][j] 用 arr[i * cols + j]
arr[i * cols + j] = value;
释放:delete[] arr;
使用std::vector(现代C++推荐)
更安全、易用的方式是使用标准库容器vector。
std::vector<:vector>> arr(rows, std::vector初始化并赋值:
for (int i = 0; i for (int j = 0; j arr[i][j] = i * cols + j;优点:自动管理内存,支持范围遍历,不易越界。
基本上就这些常用方法。静态数组适合小规模固定数据,动态分配灵活但需手动管理内存,而vector最推荐用于日常开发。不复杂但容易忽略细节,比如初始化和释放。











