




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 自行车轮胎性能测试与选型考核试卷
- 节庆用品制作工艺考核试卷
- 能源回收系统施工考核试卷
- 玩具设计中的安全性测试与评估考核试卷
- 药品代购物流安全补充条款
- 智能仓储货架安装与仓储设备维护服务合同
- 知识产权转让与知识产权运营管理合同
- 版权运营内容审核补充协议
- 电商仓储物流安全监管及应急预案合同
- 跨国集团中国区供应链总监任职聘用协议书
- 《钢铁是怎样炼成的》读书分享 课件
- 中班语言《什么东西弯又弯》课件
- 2024年民政局离婚协议书样板
- XX医院抗菌药物临床应用监督管理机制+预警机制
- 临湘事业单位统一招聘考试真题
- 2024年全国执业兽医考试真题及答案解析
- 2024年湖南省长沙市中考地理试卷真题(含答案解析)
- 《中国健康成年人身体活动能量消耗参考值》(编制说明)
- 潮健身let's dance智慧树知到期末考试答案章节答案2024年广西师范大学
- 2《归去来兮辞并序》公开课一等奖创新教学设计统编版高中语文选择性必修下册
- 法理斗争1全文
评论
0/150
提交评论