C++中new申请动态数组
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;