c++与cy语言动态开辟二维数组的多种方法_第1页
c++与cy语言动态开辟二维数组的多种方法_第2页
c++与cy语言动态开辟二维数组的多种方法_第3页
c++与cy语言动态开辟二维数组的多种方法_第4页
c++与cy语言动态开辟二维数组的多种方法_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论