在C++中,可以使用new关键字动态分配指定类型的数组。
1 动态分配的格式
使用new动态分配数组的格式为
new 类型[数组大小]
此时,返回值是指定类型的指针。以下代码动态分配了一个整形数组,该数组包含10个元素,其首地址保存在指针pia中。
int* pia = new int[10];
需要注意的是,在直接定义数组时,数组的大小必须是常量,而使用new关键字动态分配数组时,即方括号中的大小不必是常量,但是必须是整数。
2 初始化数组元素
在“1 动态分配的格式”中动态分配的数组并没有对其元素进行初始化。可以在方括号后面跟一对空括号,表示对其元素进行初始化。
int* pia2 = new int[10]();
int* psa = new string[10]();
以上代码动态分配了两个数组,其中pia2中元素的值都被初始化成0,而psa中的值都被初始化为空。
3 动态释放的格式
为了释放动态数组,需要在关键字delete之后加一个方括号。
delete []pia;
delete []pia2;
delete []psa;
数组中的元素按逆序销毁,即最后一个元素首先被销毁,然后是倒数第二个,以此类推。