




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、c+与c动态开辟二维数组的方法c+近日写到一个程序,用到了要动态开辟二维数组,一想,自己就会两种。一者:用new在堆上开辟;二者:用vector开辟。技巧没有多少,但是确实是折腾了我半天!首先,大家去网上搜一下,动态开辟二维数组的文章特别多,再加上我这篇就更多了,我本不想写这篇博文的。但看了网上各位“大虾”“大牛”写的,觉得还是有必要写一下!给各位讲清楚点,以防被网上质量残次不齐的文章误导了。 写文章者,都是学习总结之用!为了是自己的快活,也为了别人的参考方便。 那我想在就讲讲我经常用到的两种方法; 一:C+ new 法
2、 首先贴出我写的一个小小的代码吧!以供大家评论!代码都经本人在VC+ 6.0上编译运行过,无错!至于有高手再能找出bug,那就给我提出来吧,我也进步,进步!#include#includeusing namespace std;void main() int row, col; int *element = NULL; cin>>row >>col;
3、60; /动态开辟数组 element = new int *row; for (int i = 0; i < row; i+) elementi = new intcol; /输入数组 cout<<endl; for (i = 0; i
4、< row; i+) for (int j = 0; j < col; j+) cin>>elementij; /输出数组
5、160; cout<<endl; for (i = 0; i < row; i+) for (int j = 0; j < col; j+) cout<<setw(5)<<elementij;
6、 cout<<endl; 关键之处我用红笔标绘出来了!大家肯定一看就懂了!但是,有时对于新手来说,确实很懵懂的。开辟一维数组是何等简单,但是二维数组还是用开辟一维数组的思想!程序不足之处是没有销毁开辟的空间!那大家在看看销毁的代码吧!/销毁空间 for (i = 0; i < row; i+)
7、160; delete elementi; elementi = NULL; delete element; element = NULL;这是销毁开辟的空间的代码!用new在堆上开辟的空间,必须要用delete释放了,不然要出现内存泄露了! 二:vector法学习C+,就不得不学习STL了。用vecto
8、r开辟二维数组也不失为一个好办法!首先看一段代码!#include#include#includeusing namespace std;void main() int row, col; cout<<"请输入行列值:" cin>>row >>col; vector > test(row, vector(col); /
9、声明一个二维数组,注意这里的空格不能少 /初始化,其实不初始化也是可以的,vector默认是0 for (int i = 0; i < row; i+) for (int j = 0; j < col; j+) te
10、stij = 0; cout<<endl; /输出值 for (i = 0; i < row; i+) for (int j = 0; j < col; j+)
11、60; cout<<setw(5)<<testij; cout<<endl; /输出行列值 cout<<"行:"<<test.size()<<end
12、l; cout<<"列:"<<test1.size()<<endl; 编译时两次调用vector的构造函数对象test,第一次调用构造一个无名的含有col个0的vector对象.第二次调用构造函数,以这个无名向量为初始值初始化它的row个元素! C语言使用malloc函数,先分配第一维的大小,然后再循环分配每一维的大小。示例代码,分配3行4列二维数组:#include <stdio.h>#include <malloc.h>int
13、;main() int *a; int i, j; a = (int*)malloc(sizeof(int*)*3 );/为二维数组分配3行 for (i = 0; i < 3; i+i)/为每列分配4个大小空间
14、60; ai = (int*)malloc(sizeof(int)*4); /初始化 for (i = 0; i < 3; +i) for (j = 0; j < 4; +j)
15、0; aij = i+j; /输出测试 for (i = 0; i < 3; +i)
16、60; for (j = 0; j < 4; +j) printf ("%d ", aij); printf
17、 ("n"); /释放动态开辟的空间 for (i = 0; i < 3; +i) free(ai); free(a);
18、;return 0;/*输出:0 1 2 31 2 3 42 3 4 5*/自我测试#include<stdio.h>#include<iostream.h>#include <stdlib.h>#include<conio.h>#include<windows.h>int main() int row, col; int *element = NULL; cin>>row >>col; /动态开辟数组 elem
19、ent = new int *row; for (int i = 0; i < row; i+) elementi = new intcol; /输入数组 cout<<endl; for (i = 0; i < row; i+) for (int j = 0; j < col; j+) cin>>elementij; /输出数组 cout<<endl; for (i = 0; i < row; i+) for (int j = 0; j < col; j+) cout<<elementij; cout<<endl; for (i = 0; i < row; i+) delete elementi; elementi = NULL; delete element
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 本单元复习与测试说课稿-2023-2024学年小学数学二年级上册浙教版
- 管理信息系统课程在线模拟测试
- 人际互动理论中的媒体认知进化规律研究
- 工会志愿服务活动策划方案案例
- 小学音乐欣赏课程教学反思报告
- 量子态预测-洞察及研究
- 室内环境热舒适度影响因素评价体系研究
- 安全阀考试题库在线及答案解析
- 小学古诗文竞赛试题合集
- 员工工作总结自我评估
- 2025年中国张裕产区葡萄酒特色与品牌国际化发展报告
- 图深度强化学习在配电网故障恢复中的应用研究
- (2017)海南省房屋建筑与装饰装修工程综合定额交底资料
- 2024-2025学年下学期高一英语人教版同步经典题精练之语法填空
- 《社会科学研究方法》课件
- 《基础护理学》第七版考试题库大全-上部分(600题)
- 提高市政雨水管道接口施工一次验收合格率
- 2025年有机化学实验模板
- 基坑安全事故及防范措施
- 欧盟食品安全法律法规
- GB 21258-2024燃煤发电机组单位产品能源消耗限额
评论
0/150
提交评论