您的位置:首页 > 编程语言 > C语言/C++

C++中动态申请二维数组并释放方法

2016-04-05 18:33 435 查看
C/C++中动态开辟一维、二维数组是非常常用的,以前没记住,做题时怎么也想不起来,现在好好整理一下。
C++中有三种方法来动态申请多维数组
(1)C中的malloc/free
(2)C++中的new/delete
(3)STL容器中的vector
下面逐一介绍:

第一种:malloc/free

1.动态开辟一维数组

[cpp] view
plain copy

print?

//动态开辟一维数组

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.动态开辟二维数组

[cpp] view
plain copy

print?

//动态开辟二维数组

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.动态开辟一维数组

[cpp] view
plain copy

print?

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.动态开辟二维数组

[cpp] view
plain copy

print?

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

动态开辟二维数组

[cpp] view
plain copy

print?

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: