众所周知,创建一维动态数组很容易,使用下面的代码便可以轻松创建
int *Array=new int[10];//Add some code here;delete [] Array;但是,如果遇到动态的二维数组应当如何创建呢?这里给出3中方法: 方法一:用一维数组去模仿二维数组,由于无论何种类型的动态数组,其在内存中都是线性的,所以可以用一维数组去模拟。 优点:处理简单,加上一个转换函数就可以实现,管理容易。 缺点:不直观。
int length,width;int *Array=new int [length*width];//Add some code heredelete Array;方法二:先创建一排指针,再依次申请内存。 优点:较为直观,管理方便。 缺点:必须知道行数或列数。
int width;int *Pointer[10];for(int i=0;i<10;i++){ Pointer[i]=new int [width];}//Add some code herefor(int i=0;i<10;i++){ delete [] Pointer[i];}方法三:用二级指针申请一维动态指针数组,再一次申请。(该过程申请到的内存单元连续) 优点:直观,使用方便。 缺点:创建、销毁都比较麻烦,需要逐层销毁。
int length,widthlint **Poniter=new int*[length];for(int i=0;i<length;i++){ Pointer[i]=new int[width];}//Add some code here;for(int i=0;i<10;i++){ delete [] Poniter[i];}delete [] Pointer;新闻热点
疑难解答