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

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

2015-09-10 16:45 477 查看
三个方法:

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