首页 > 技术文章 > C++中new申请动态数组

usa007lhy 2013-08-27 17:35 原文

      C++中数组分为静态数组和动态数组,静态数组必须确定数组的大小,不然编译错误;而动态数组大小可以不必固定,用多少申请多少。静态数组类于与我们去餐馆吃饭,餐馆会把菜做好。而动态数组类似于我们自己买菜做饭。去餐馆吃饭不需要自己动手,但是如果菜太多会吃不了,太少不够吃的;在家做饭需要自己动手做饭,而且吃完饭还要刷锅洗碗,着实很累,但是吃多少做多少,不会浪费,也不会不够。

      静态数组的大小必须确定,即数组参数必须是常量,如下:

int num[10];  
int SimDoc[3][4];

     动态数组的参数可以是常量,也可以是变量,但是用完之后,必须回收数组的内存空间,不然会出错:

    (1)动态申请单个内存空间:

int *p = new int;
delete p;

 

   (2)申请动态一维数组:

int k;
cin >> k;
int *p = new int[k];   
int *q = new int[10];

 
delete[] p;
delete[] q;

 

   (3) 申请动态二维数组:

int m, n;
cin >> m >> n;
int *p = new int*[m];
for(int i =0; i < m; i++){
p[i] = new int[n];
}

...........

...........

for(int i =0; i < m; i++){
delete[] p[i];
}
delete[] p;

 

推荐阅读