C++中二维数组的动态分配
来源:互联网 发布:官网pkpm软件多少钱 编辑:程序博客网 时间:2024/05/19 11:19
百度上一篇文章,对动态数组作了比较详细的分析,我对它进行了初步的整理:
二维数组定义以及动态分配空间
以三个二维数组的比较来展开讨论:
(1)、int **Ptr;
(2)、int *Ptr[ 5 ];
(3)、int (*Ptr)[5];
以上三例都是整数的二维数组,但它们的差别却是很大的。
一、意义:
(1)、int **Ptr 表示指向"一群"指向整数的指针的指针。
(2)、int *Ptr[ 5 ] 表示指向 5 个指向整数的指针的指针,或者说Ptr有5个指向"一群"整数的指针,Ptr是这5个指针构成的数组的地址
(3)、int ( *Ptr )[ 5 ] 表示指向"一群"指向 5 个整数数组的指针的指针。
二、所占空间:
(1)、int **Ptr 和 (3)、int ( *Ptr )[ 5 ] 一样,在32位平台里,都是4字节,即一个指针。
但 (2)、int *Ptr[ 5 ] 不同,它是 5 个指针,它占5 * 4 = 20 个字节的内存空间。
可以这样理解它们:
int ** Ptr <==> int Ptr[ x ][ y ];
int *Ptr[ 5 ] <==> int Ptr[ 5 ][ x ];
int ( *Ptr )[ 5 ] <==> int Ptr[ x ][ 5 ];
这里 x 和 y 是表示若干的意思。
(注:原文网址:http://wenku.baidu.com/view/f5671b69af1ffc4ffe47ac64.html)
C++中一维数组的动态分配十分常用,但C++初学者可能很少想过要使用动态分配的二维数组,或者自认为二维数组就是这样分配的
(至少我自己开始的时候就这样认为):
int m=2, n=3; int** array2D=new int[m][n];
这完全是我们写多了像int n=4; int* array=new int[n];的想当然的想法。
下面是我用c++写的定长和不定长动态二维数组的简单实现,经过了初步测试。欢迎CSDN的朋友们就此问题提出你的意见和看法。
测试:
- C++中动态分配二维数组
- C语言中动态分配二维数组
- C语言中二维数组动态分配内存
- C++中动态分配二维数组的方法
- C++中二维数组的动态分配
- C++中二维数组的动态分配
- C++中二维数组的动态分配
- C++中动态分配二维数组的方法
- 二维数组的动态分配
- 二维数组的动态分配
- 二维数组的动态分配
- 二维数组的动态分配
- C语言动态分配二维数组
- C语言动态分配二维数组
- C/C++动态分配二维数组
- C语言二维数组动态分配
- C语言动态分配二维数组
- C/C++动态分配二维数组
- javascript变量
- TC 3D模型绘图
- Design Patterns 2 : Facade -- Simplification & Encapsulation
- HTTP协议 TCP/IP协议
- 雅鲜餐饮
- C++中二维数组的动态分配
- RubyMine 3.0 注册 序列号 破解
- 【调试】VS中的调试技巧(2)
- 自定义Struts2表单验证后的错误信息显示格式/样式
- Robocup3d (simspark-0.22 or later)关于线的识别和使用(定位)。
- 输入框被软健盘挡住的情况解决方法
- readUTF()和writeUTF()
- zkw线段树 逆推 poj2828
- 隐藏控制台程序