牛骨文教育服务平台(让学习变的简单)
博文笔记

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

创建时间:2015-09-10 投稿人: 浏览次数:2574

三个方法:

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

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。