C++中动态申请二维数组并释放方法
2013-11-17 17:00
316 查看
C/C++中动态开辟一维、二维数组是非常常用的,以前没记住,做题时怎么也想不起来,现在好好整理一下。
C++中有三种方法来动态申请多维数组
(1)C中的malloc/free
(2)C++中的new/delete
(3)STL容器中的vector
下面逐一介绍:
运行结果:
2.动态开辟二维数组
运行结果:
2.动态开辟二维数组
转载请标明出处:http://blog.csdn.net/u012027907
C++中有三种方法来动态申请多维数组
(1)C中的malloc/free
(2)C++中的new/delete
(3)STL容器中的vector
下面逐一介绍:
第一种:malloc/free
1.动态开辟一维数组//动态开辟一维数组 void dynamicCreate1Array() { int m; int i; int *p; printf("请输入开辟的数组长度:"); scanf("%d",&m); p = (int*)malloc(sizeof(int)*m);//动态开辟 printf("请输入数据:"); for(i = 0; i < m ; i++) scanf("%d",&p[i]); printf("输出数据:\n"); for(i = 0; i < m; i++) printf("%d ",p[i]); free(p); }
运行结果:
2.动态开辟二维数组
//动态开辟二维数组 void dynamicCreate2Array() { int m,n; int i,j; int **p; printf("请输入数组行和列:"); scanf("%d%d",&m,&n); p = (int**)malloc(sizeof(int*)*m); //开辟行 for(i = 0; i < m; i++) { *(p+i) = (int*)malloc(sizeof(int)*n);//开辟列 } //输入数据 printf("请输入数:"); for(i = 0 ; i < m;i++) for(j = 0; j < n;j++) scanf("%d",&p[i][j]); //输出数据 for(i = 0 ; i < m;i++) { for(j = 0; j < n;j++) { printf("%3d ",p[i][j]); } printf("\n"); } //释放开辟的二维空间 for(i = 0; i < m;i++) free(*(p+i)); }
运行结果:
第二种:new/delete
1.动态开辟一维数组void DynamicCreate1Array() { int len; cout<<"请输入长度:"; cin>>len; int *p = new int[len]; cout<<"请输入数据:"; for(int i = 0; i < len; i++) cin>>p[i]; cout<<"输出数据:"<<endl; for(i = 0; i < len; i++) cout<<setw(4)<<p[i]; delete[] p; }
2.动态开辟二维数组
void DynamicCreate2Array() { int m,n; cout<<"请输入行和列:"; cin>>m>>n; //动态开辟空间 int **p = new int*[m]; //开辟行 for(int i = 0; i < m; i++) p[i] = new int ; //开辟列 cout<<"请输入数据:"; for(i = 0 ; i < m ; i++) for(int j = 0; j < n; j++) cin>>p[i][j]; cout<<"输出数据:"<<endl; for(i = 0; i < m; i++) { for(int j = 0; j < n; j++) cout<<setw(3)<<p[i][j]; cout<<endl; } //释放开辟的资源 for(i = 0; i < m; i++) delete[] p[i]; delete[] p; }
第三种:STL中的vector
动态开辟二维数组void VectorCreate() { int m,n; cout<<"请输入行和列:"; cin>>m>>n; //注意下面这一行:vector <int后两个 "> "之间要有空格!否则会被认为是重载 "> > "。 vector<vector<int> > p(m,vector<int>(n)); cout<<"请输入数据:"; for(int i = 0 ; i < m ; i++) for(int j = 0; j < n; j++) cin>>p[i][j]; cout<<"输出数据:"<<endl; for(i = 0; i < m; i++) { for(int j = 0; j < n; j++) cout<<setw(3)<<p[i][j]; cout<<endl; } }
转载请标明出处:http://blog.csdn.net/u012027907
相关文章推荐
- C++中动态申请二维数组并释放方法
- C++中动态申请二维数组并释放方法
- C++中动态申请二维数组并释放方法
- C++中动态申请二维数组并释放方法
- C++中动态申请二维数组并释放方法
- 【原】动态申请二维数组并释放的三种方法
- C++ 关于二维数组的动态分配和释放——方法一(new)
- C++中动态申请与释放二维数组
- 动态申请二维数组并释放方法
- C++申请动态二维数组
- C++动态二维数组内存的分配和释放 opencv
- c++动态创建二维数组的方法
- C++ vector CArray 动态申请二维数组
- c++用动态创建二维数组的几种方法
- 继续我的c++语法,,,二维数组的动态创建和释放
- C语言中动态的申请二(三)及多维数组的使用方法及释放方法
- C/C++中动态创建和释放二维数组的两种办法
- C\C++动态申请内存用于存放二维数组
- C++学习笔记(16)——动态二维数组的分配与释放
- C++动态申请二维数组