C/C++创建二维数组/指针数组

三个方法:

1.用两层vector模版直接做。
2.用一维数组模拟二维,即int * p = new int [x * y];分配一个x * y大的数组,然后要用的时候把二维下标映射到一维中,这样做的最大好处是,分配的数组空间是连续的,像一个真正的二维数组,缺点是用起来不像二维数组,得做下标映射。
3.先分配一组指向数组的指针,然后为每一个指针赋值,使它指向一块分配出来数组。这样做的好处是用起来(语法上)像二维数组,但实际上分配的内存不像二维数组,它不能保证内存是连续的。这种做法delete时要用循环别忘了。
指针数组就是这样呀:
int ** p = new int *[10];

--------------------------------------------------------------------------------------------------------------------------------------------------

//用new创建一个二维数组,有两种方法,是等价的
一:
int (*p)[10] = new int[5][10];
二:
int **p = new int[5];
for(int i=0;i<5;i++)
    p[i] = new int[10];

//指针数组的创建,也有两种方法
一:
char *pa = new char[4];
for (int i=0;i<4;i++)
{
    pa[i] = new char[8]; //为每个指针都分配8个char元素空间。
}
二:
char *pa[4];//可以不用new创建
for (int i=0;i<4;i++)
{
    pa[i] = new char[8]; //为每个指针都分配8个char元素空间。
}


//delete二维数组
for(int i=0; i<5; ++i)
    delete [] p[i];
delete []p;

//delete指针数组
一:
for(int i=0; i<4; ++i)
    delete [] pa[i];
delete []pa;
二:
for(int i=0; i<4; ++i)
    delete [] pa[i];

---------------------------------------------------------------------------------------------------------------------------------------------------------------

参考http://bbs.youkuaiyun.com/topics/60070745

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值