C/C++中动态开辟一维、二维数组是非常常用的,以前没记住,做题时怎么也想不起来,现在好好整理一下。

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[n]; //开辟列 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++中动态申请二维数组并释放方法的更多相关文章

  1. 消除VS中动态申请二维数组C6011,C6385,C6386的警告

    动态申请二维数组,无非就是通过指针来实现.@wowpH 过程分三步:1.申请内存,2.使用数组,3.释放内存. 代码如下: /************************************* ...

  2. c中使用malloc动态申请二维数组

    前言 今天写代码的时候,想要动态的申请一个二维数组空间,思索了一段时间才写出来,这里记录一下吧,以后就不至于再浪费时间了.下面以申请int型数组作为例子: 申请一维数组 一维数组的数组名可以看成数组起 ...

  3. 如何在C++中动态建立二维数组(转)

    http://blog.sina.com.cn/s/blog_7c073a8d0100qp1w.html http://blog.163.com/wujiaxing009@126/blog/stati ...

  4. c++和c动态申请二维数组

    这是我面试中遇到的一道题,用c和c++分别申请一个二维数组,int **res,要求申请后的可以使用res[3][4]这一类防存方式. 这个是没有错误检查的版本. 答案: c++语言的版本 int * ...

  5. 转:用STL中的vector动态开辟二维数组

    用STL中的vector动态开辟二维数组 源代码:#include <iostream>#include <vector>using namespace std;int mai ...

  6. C语言动态生成二维数组

    # 动态创建二维数组示例 #include "stdlib.h" #include "stdio.h" #include <malloc.h> in ...

  7. C语言 动态创建二维数组

    /*C语言 如何动态创建二维数组 转化为一维数组申请数组,创建和释放都比较简单 */ #include <stdlib.h> #include <stdio.h> #inclu ...

  8. OpenCV中Mat与二维数组之间的转换

    ---恢复内容开始--- 在OpenCV中将Mat(二维)与二维数组相对应,即将Mat中的每个像素值赋给一个二维数组. 全部代码如下: #include <iostream> #inclu ...

  9. C语言中如何将二维数组作为函数的参数传递

    今天写程序的时候要用到二维数组作参数传给一个函数,我发现将二维数组作参数进行传递还不是想象得那么简单里,但是最后我也解决了遇到的问题,所以这篇文章主要介绍如何处理二维数组当作参数传递的情况,希望大家不 ...

随机推荐

  1. Windows下免费、开源邮件服务器hMailServer

    Windows下免费.开源邮件服务器hMailServer 一.Windows下搭建免费.开源的邮件服务器hMailServer 二.邮件服务器hMailServer管理工具hMailServer A ...

  2. win7x64下的redis安装与使用

    先引用百度百科的一段话吧,具体可以到百科查看吧. Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年 ...

  3. 极光推送使用实例(二) Android客户端

    上一篇简单介绍了极光推送在Java服务端的实现,如果感兴趣的可以看一下极光推送使用实例(一)JAVA服务端.这篇文章介绍下极光推送在Android客户端的实现. JPush Android SDK 是 ...

  4. datatables 参数详解(转)

    //@translator codepiano //@blog codepiano //@email codepiano.li@gmail.com //尝试着翻译了一下,难免有错误的地方,欢迎发邮件告 ...

  5. django - request.raw_post_data 与 request.body

    request.raw_post_data 重命名成了 request.body - 在1.3版本之后. 这是当时 起票 的讨论内容:https://code.djangoproject.com/ti ...

  6. Oracle 跟踪事件 set event

    一.Oracle跟踪文件 Oracle跟踪文件分为三种类型,一种是后台报警日志文件,记录数据库在启动.关闭和运行期间后台进程的活动情况,如表空间创建.回滚段创建.某些alter命令.日志切换.错误消息 ...

  7. IOS 五星评分控件

    程序中需要打分的功能,在网上找了几个,都不是很满意.下面是实现出的效果.可以点击,可以拖动. 使用方法:初始化控件. TQStarRatingView *starRatingView = [[TQSt ...

  8. Myeclipse8.5 svn插件安装两种方式

    第一种方式:(亲测成功)第一步:准备插件包:site-1.6.18.zip解压该包里面有features和plugins文件夹,删除该包里面的xml结尾的文件. 第二:我的Myeclipse8.5安装 ...

  9. 【成都GamEver游戏公司诚邀服务器伙伴】【7~15k一年4次项目奖金】

    关于我们 我们厌倦了朝九晚五,一眼看到头的人生我们厌倦了耗费自己青春做的都是没有感情的项目平均从业经验5年以上行业顶尖美术和金牌制作人,资深欧美制作经验立志做中国的suppercell,公司小而美 我 ...

  10. mvc bundle功能(1)

    现如今都提倡敏捷开发,快速开发,但是再要求速度的同时,还得保证质量!前端我是没办法,毕竟是直接要面向用户的,但是后台,解决方案那就多了,诸如extjs,bootstrap,kendoui,都可以解决. ...