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
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
相关文章推荐
- C++ explicit
- C++成员变量的初始化顺序如果不使用初始化列表初始化,在构造函数内初始化时,此时与成员变量在构造函数中的位置有关。
- 【more effective c++读书笔记】【第5章】技术(7)——让函数根据一个以上的对象类型来决定如何虚化(2)
- 【more effective c++读书笔记】【第5章】技术(7)——让函数根据一个以上的对象类型来决定如何虚化(2)
- 命名空间
- HDU 5011(博弈)
- C++的学习心得
- c++使用c代码
- 解读C/C++声明的Clockwise/Spiral Rule(顺时针螺旋规则)
- C++学习笔记:回调函数使用
- C++ 小记 vector 容器(二)
- C和C++中typedef struct的区别
- C++map的用法
- C语言的整型溢出问题
- <<C++编程思想 第2卷>>读后感
- stl_set
- C++中双冒号(::)和冒号(:)的用法
- c++ --> typedef用法总结
- C++类的私有继承
- c++用法的学习心得