版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39776901/article/details/78837219
早就学了动态数组,一直记不住,写出来以便以后用到的时候查阅
在C++中,数组的大小必须是预先定义好的,才能编译通过,但多数情况数组的大小并不能预先知道
但是同时你也不能这样写
int n;
scanf("%d",n);
int a[n];
因为C++中不允许用变量来定义数组,所以就用到了动态数组,动态数组用到了new,delete,在堆上分配内存
动态数组的用法:
//一维动态数组
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
int n;
int *p;
cin>>n;
p=new int[n];
for(int i=0;i<n;i++)
{
p[i] = i;
cout << p[i];
}
delete []p;
return 0;
}
//二维动态数组
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
int m; //行数
int n; //列数
cin >> m >> n;
int **p = new int*[m]; //申请行
if((p)==0)
{
cout << "false" << endl;
return 0;
}
//申请列
for(int i=0;i<m;i++)
{
p[i] = new int[n];
if(p[i]==0)
{
cout << "false" << endl;
return 0;
}
}
//初始化
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
p[i][j] = i;
//输出
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
cout << p[i][j];
//释放内存
for(int i=0;i<m;i++)
delete p[i];
delete []p;
return 0;
}