📅  最后修改于: 2023-12-03 14:50:53.392000             🧑  作者: Mango
在 C++ 中,动态生成数组是一种在运行时创建和管理数组的强大技术。与静态数组不同,动态数组的大小可以在运行时确定,并且可以根据需要进行动态调整。
使用动态数组的主要原因是在编译时无法确定数组大小的情况下,需要灵活地使用内存。它允许我们根据程序的实际需求来动态分配内存,并在不再需要时释放内存。
动态数组可以用于解决以下问题:
在 C++ 中,动态生成数组的常用方法是使用 new
运算符来动态分配内存。new
运算符会返回一个指向新分配内存的指针,我们可以将其赋值给一个指针变量来引用动态数组。
// 动态生成一个 int 数组,大小为 n
int* dynamicArray = new int[n];
上述代码将创建一个长度为 n
的 int
类型的动态数组,并返回指向数组首元素的指针。使用 new
运算符后,我们需要手动管理内存,即在不再需要数组时释放内存以避免内存泄漏。
// 释放动态数组内存
delete[] dynamicArray;
注意,在释放动态数组内存时,我们需要使用 delete[]
运算符,而不是简单的 delete
运算符。
除了动态生成一维数组,我们也可以使用动态生成二维数组。二维数组是由若干行和若干列组成的矩阵数据结构。
// 动态生成一个 n 行 m 列的 int 二维数组
int** dynamicArray = new int*[n];
for (int i = 0; i < n; i++) {
dynamicArray[i] = new int[m];
}
上述代码将创建一个 n 行 m 列的 int
类型的二维动态数组。我们首先通过 new
运算符创建一个长度为 n
的指针数组,然后在每个指针位置上再使用 new
运算符创建一个长度为 m
的一维数组。
同样地,在不再需要二维数组时,我们需要释放动态分配的内存。
// 释放二维数组内存
for (int i = 0; i < n; i++) {
delete[] dynamicArray[i];
}
delete[] dynamicArray;
动态生成数组是 C++ 中一种强大且灵活的技术,它允许我们在运行时分配和管理内存,从而有效地处理各种数据结构和问题。在使用动态数组时,务必记得在适当的时候释放内存,以避免内存泄漏和程序的性能问题。
参考链接