C++ 动态数组

 在平常敲代码的时候  一般的题目会说明题目数据最大是多少   这时候 我可以把需要使用的数组按最大值开空间

但是在一些时候题目可能并不会告诉你最大值    它直接就是先输入一个n    然后输入n个数据   可不告诉你n的最大值

简单来说  就是  :普通的数组在编译的时候  我们就需要知道数组的大小   而动态数组的话就不需要

那我们来了解一下动态数组的使用:

每一个程序在执行的时候   都会占用一块可用的内存空间  用来存放动态分配的对象    此空间被称为“自由存储区”或者“堆”   

在C语言中   我们使用malloc和free来分配自由存储区的空间

在C++中   我们使用new   和   delete  来实现相同的功能

     int *a=new int[12];//创建空间为12的整数型数组
     string *str=new string[12];//创建string型数组
     int *b=new int[12]();//创建整数型数组   并初始化为0
     delete []a;//释放为a数组开辟的空间

从上面说的   并没有说明  为什么可以不在编译的时候   确定数组的大小    原因是我们在代码中应该这样使用

     int n;    cin>>n;
     int *a=new int[n];

也就是说   根据每一个测试案例的大小来开辟空间    这样就不会造成内存的浪费

另外在这提一下const型的动态数组    

const类型的动态数组    在你定义的时候   必须初始化   因为我们不能改变const类型的值

原文地址:https://www.cnblogs.com/52why/p/7569397.html