1、数组定义方式,以下两种的区别在于生存期不同。
1)int example[5];
在栈上创建的,当我们达到主函数最后的花括号时,它就会被销毁,因为跳出了作用域范围
2)int* another=new int[5];
delete[] another;
在堆上创建的,直到程序把它销毁之前,它都是处于活动状态的,所以我们需要使用delete关键字来删除。
2、我们何时使用栈?何时使用堆呢?
最大的原因在于生存期不同,用new分配的内存,它将一直存在,直到我们删除它
在栈上创建的数组,我们可以很容易的计算数组的大小
int size=sizeof(example)/sizeof(int)
即可得到数组的大小,但是用堆创建的数组不可以通过这种方式计算数组大小
于是我们可以用std::array来创建数组,需要#include<array>头文件
然后std::array<int,5> another
int表示数组中的元素类型,5表示数组的大小