动态数组
在之前关于数组的课程中,我们研究了如何创建这样的数组:
常数 int Nmax = 1000;
int A[Nmax];
或者 这个:
intA[1000];
此方法创建一个静态数组。缺点之一是程序运行时无法更改数组元素的大小和类型。
在上面的示例中,创建了一个包含 1000 个元素的静态数组。即在内存中分配一块区域,存放1000个int
类型的元素(1000个int
类型元素的数组)。数组开头的地址存储在 A
变量中。如果需要处理超过 1000 个元素的数组,则必须更改描述并重新编译程序。使用小型数组时,分配给静态数组的大部分内存将被浪费。
为了有效地使用计算机内存,有必要对其进行动态分配。换句话说,对象的内存应该在程序执行期间根据需要分配(创建新对象)。
在 C++ 中, new
和 delete
操作旨在动态分配计算机内存。操作 new
从空闲内存区分配内存,操作 delete
deallocates分配的内存。
创建和删除动态变量的示例
整数 *A = 新整数; //创建一个int类型的对象
*A = 15; // 对象初始化通过指针 (*) 发生
// 初始化可以立即完成
// 当声明一个动态对象时
整数 *B = 新整数(25);
输出 << *一个<< “ “ << *B; // 通过指针输出值
删除A; // 释放分配的内存
删除 B;
操作 new
创建给定类型的对象,为其分配内存,并返回指向给定内存位置的正确类型的指针。如果无法分配内存,例如没有空闲区域,则返回空指针,即指针将返回值0。任何数据类型都可以分配内存: int
, float
,double
, char
等
同样,在 C++ 中,您可以创建一个将使用动态内存分配的动态数组。这种数组的大小,可以在程序运行时使用,例如,从键盘创建动态变量。
在 C 语法中
诠释;
scanf("%d", &N);
int *mas = malloc (sizeof(int) * N);
// 稍后调整数组大小
// 由 realloc
使用。
...
免费(mas); // 释放分配的内存
<分区>
在 C++ 语法中
诠释;
辛>>否;
整数*A = 新整数[N];
// 要改变数组的大小,你可以
// 将数据转移到另一个数组,并清除旧的
...
删除 []mas; // 释放分配的内存
//方括号表示
// 我们正在释放数组下的内存