/**
*cppTest-3.0:指针相关-3(二维数组的n种new方式)
*
*转载+原创
*author 炜sama
*/
#include<iostream.h>
void main()
{
typedef int A;
const int m=2,n=2;//记住:定义数组时数组长度一定要用常量!!!
//1、new二维数组方式
//缺点:n必须是已知
//优点:调用直观,连续储存,程序简洁(经过测试,析构函数能正确调用)
A (*ga)[n] = new A[m][n];//一次性就new了m*n内存,比方式2简单得多!
ga[0][0]=1;
cout<<ga[0][0]<<endl;
delete []ga;
//2、new一维指针数组方式
//缺点:非连续储存,程序烦琐
//优点:调用直观,n可以不是已知
A** ga2 = new A*[m];
A** ga22=new A* [m];//这种方式也可以!
//A** ga22=new *A[m];//这种方式是错误的!
for(int i = 0; i < m; i++)
ga2[i] = new A[n]; //还要new出每行的数组
ga2[0][0]=2;
cout<<ga2[0][0]<<endl;
for(int j = 0; j < m; j++)
delete []ga2[j];//释放每行数组
delete []ga2;//最后还要释放指针数组......
//3、2的改进
//优点:连续存储,n可以不是已知,析构方便
A** ga3=new A*[m];
//ga3[0]=new A[m*n];
*ga3=new A[m*n];
//for(int k=1;k<m;k++)
//ga3[k]=ga3[k-1]+n;
ga3[0][0]=3;
cout<<ga3[0][0]<<endl;
delete []*ga3;
//delete []ga3;
//4、将二维数组当成一维数组来new
//缺点:调用不够直观
//优点:连续储存,n可以不是已知
A* ga4 = new A[m*n];
ga4[0]=4;
cout<<ga4[0]<<endl;
delete []ga4;
//5
//6
}
cppTest-3.0:指针相关-3(二维数组的n种new方式)
最新推荐文章于 2024-06-27 11:18:59 发布