C++中动态申请二维数组并释放方法
2013-11-18 13:47
369 查看
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和C++如何动态申请内存和释放内存?有什么区别?
- C与C++动态分配二维数组的实现方法
- 用malloc动态申请一个二维数组的三种方法
- 【拾遗】C++申请与销毁动态二维数组
- C语言中二维数组的动态申请与释放
- C++:对象数组、对象动态申请和释放、类的定义和实现分开、this指针、常成员函数、时钟
- C语言中二维数组的动态申请与释放
- 【拾遗】C++申请动态连续内存的二维数组
- C++new delete 动态申请二维数组
- C 二维数组的动态申请与释放