c/c++ 多维数组的动态分配
2017-10-05 03:39
260 查看
我们知道在c或者c++里面,基本数组的定义必须是常数才可以。动态分配内存没法直接了当。
在c++ 里可以vector来动态分配,
例如:
但是更基本的做法是指针来new,
一维数组:
二维数组:
P.S. 事实上二维数组空间的释放还可以更简单地用:delete [] array2D;
三维数组;
c语言malloc 版本:
在c++ 里可以vector来动态分配,
例如:
vector<vector<int>> dp(n + 1, vector<int>(W + 1));
但是更基本的做法是指针来new,
一维数组:
1 int *array1D; 2 //假定数组长度为m 3 //动态分配空间 4 array1D = new int [m]; 5 //释放 6 delete [] array1D;
二维数组:
int **array2D; //假定数组第一维长度为m, 第二维长度为n //动态分配空间 array2D = new int *[m]; for( int i=0; i<m; i++ ) { array2D[i] = new int ; } //释放 for( int i=0; i<m; i++ ) { delete [] arrar2D[i]; } delete array2D;
P.S. 事实上二维数组空间的释放还可以更简单地用:delete [] array2D;
三维数组;
int ***array3D; //假定数组第一维为m, 第二维为n, 第三维为h //动态分配空间 array3D = new int **[m]; for( int i=0; i<m; i++ ) { array3D[i] = new int * ; for( int j=0; j<n; j++ ) { array3D[i][j] = new int [h]; } } //释放 for( int i=0; i<m; i++ ) { for( int j=0; j<n; j++ ) { delete array3D[i][j]; } delete array3D[i]; } delete array3D;
c语言malloc 版本:
#include<malloc.h> int **a=(int **)malloc(m*sizeof(int *)); for(int i=0;i<m;i++) a[i]=(int *)malloc(n*sizeof(int));
相关文章推荐
- C++:多维数组的动态分配(new)和释放(delete)
- C++:多维数组的动态分配(new)和释放(delete)
- C++:多维数组的动态分配(new)和释放(delete)
- C++:多维数组的动态分配(new)和释放(delete)
- C++库研究笔记—— [真正正确?]多维数组动态分配正确方式?(之一)
- C++:多维数组的动态分配(new)和释放(delete)
- C++:多维数组的动态分配(new)和释放(delete)
- c语言中内存的动态分配与释放(多维动态数组构建)
- C/C++动态内存分配之用malloc和指针实现动态数组排序
- 动态分配多维数组
- C++大作页-数组运算.动态多维数组
- c++中动态分配数组
- c语言中内存的动态分配与释放(多维动态数组构建)
- C++创建动态空间的未知大小的二维数组、三维数组、多维数组
- c语言中内存的动态分配与释放(多维动态数组构建)
- C++中关于[]静态数组和new分配的动态数组的区别分析
- C++ 用new 动态创建多维数组
- c和c++分别实现动态分配二、三维数组
- C++中 关于多维数组在计算机内存中的分配情况
- C++中数组的动态分配以及内存分配的方式