因为我们是分配一个数!

除了动态分配单个值,我们还可以动态地分配数组的变量。不同于一个固定的数组,数组的大小必须固定在编译时,动态分配一个数组,使我们能够在运行时选择一个数组长度。

要动态分配数组,我们使用新的和删除的数组形式(通常被称为新的[ ]和删除[ ]):

#include <iostream>
 
int main()
{
    std::cout << "Enter a positive integer: ";
    int size;
    std::cin >> size;
 
    int *array = new int[size]; // use array new.  Note that size does not need to be constant!
 
    std::cout << "I just allocated an array of size " << size << '\n';
 
    array[0] = 5; // set element 0 to value 5
 
    delete[] array; // use array delete to deallocate array
    array = 0; // use nullptr instead of 0 in C++11
 
    return 0;
}

因为我们是分配一个数组,C++知道应使用新的而不是新的标量数组版版。从本质上讲,新的[ ]操作符被调用,即使[ ]没有被放置在新的关键字的旁边。
请注意,因为这个内存是从一个不同的地方分配比用于固定数组的内存,数组的大小可以是相当大的。您可以运行上面的程序,并分配一个长度为1000000(甚至可能是100000000)的数组,没有问题。试试!正因为如此,程序需要在C++分配大量内存通常这样做动态。
动态删除阵列
当删除一个动态分配的数组时,我们必须使用删除的数组版本,这是删除[ ]。这告诉了处理器,它需要清理多个变量,而不是一个单一的变量。在处理动态内存分配时,新的程序员所犯的最常见的错误之一是使用删除而不是删除删除一个动态分配的数组。使用在数组中删除的标量版本可能会导致数据损坏、内存泄漏或其他问题。
动态数组几乎是相同的固定数组
在第6.8课-指针和数组中,你知道一个固定数组保存第一个数组元素的内存地址。您还了解到,一个固定数组可以衰减到指向数组的第一个元素的指针。在这个衰减的形式,固定数组的大小是不可用的,但否则有小的差异。
一个动态数组作为指向数组第一个元素的指针而开始它的生命。因此,它不知道它指向的数组的大小。但是,它与一个腐朽的固定阵列,除了程序本身是负责释放它。
请注意,因为一个动态数组不知道它指向的数组的大小,一个动态数组不会在每个循环中工作。遗憾,那。
初始化动态分配的数组
如果要将动态分配的数组初始化为0,则语法非常简单:

2
int fixedArray[5] = { 9, 7, 5, 3, 1 }; // initialize a fixed array in C++03
int *array = new int[5] { 9, 7, 5, 3, 1 }; // initialize a dynamic array in C++11


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值