二维数组定义以及动态分配空间

上传人:大米 文档编号:454682201 上传时间:2022-08-15 格式:DOC 页数:3 大小:34KB
返回 下载 相关 举报
二维数组定义以及动态分配空间_第1页
第1页 / 共3页
二维数组定义以及动态分配空间_第2页
第2页 / 共3页
二维数组定义以及动态分配空间_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《二维数组定义以及动态分配空间》由会员分享,可在线阅读,更多相关《二维数组定义以及动态分配空间(3页珍藏版)》请在金锄头文库上搜索。

1、二维数组定义以及动态分配空间(转)下面三种定义形式怎么理解?怎么动态分配空间?、int *Ptr;、int *Ptr 5 ;我更喜欢写成int* Prt5;、int ( *Ptr ) 5 ;此文引自网上,岀处不详,但是觉得非常好。略改了一点。多维数组一向很难,一般都采用一维数组,但是一旦要用到还真是头疼。 闲话少说,这里我就以三个二维数组的比较来展开讨论:(1) 、 int *Ptr;(2) 、int *Ptr 5 ;我更喜欢写成 int* Prt5;(3) 、int ( *Ptr ) 5 ;以上三例都是整数的二维数组,都可以用形如Ptr 1 1 的方式访问其内容;但它们的差别却是很大的。下面

2、我从四个方面对它们 进行讨论:一、内容:它们本身都是指针,它们的最终内容都是整数。注意我这里说 的是最终内容,而不是中间内容,比如你写Ptr 0 ,对于三者来说,其内容都是一个整数指针,即 int *; Ptr 1 1这样的形式才是其最终内容。二、意义:(1) 、int *Ptr表示指向一群指向整数的指针的指针。(2) 、int *Ptr 5 表示指向5个指向整数的指针的指针,或者说Ptr有5个指向一群“整数的指针,Ptr是这5个指针构成的数组的地址(3) 、int ( *Ptr ) 5 表示指向一群“指向5个整数数组的指针的指针。三、所占空间:(1) 、int *Ptr和(3)、int (

3、*Ptr ) 5 一样,在32位平台里,都是4字节,即一个指针。但(2)、int *Ptr 5 不同,它是 5个指针,它占5 * 4 = 20个字节的内存空间。四、用法:(1)、int *Ptr因为是指针的指针,需要两次内存分配才能使用其最终内容。首先,Ptr = ( int * )new int * 5 ;这样分配好了以后,它和(2)的意义相同了;然后要分别对 5个指针进行内存分配,例如:Ptr 0 = new int 20 ;它表示为第0个指针分配 20个整数,分配好以后,Ptr 0 为指向20个整数的数组。这时可以使用下标用法Ptr 0 0 至UPtr 0 19 了。如果没有第一次内存分

4、配,该Ptr是个野指针,是不能使用的,如果没有第二次内存分配,则Ptr 0 等也是个“野指针,也是不能用的。当然,用它指向某个已经定义的地址则是允许的,那是另外 的用法(类似于“借鸡生蛋的做法),这里不作讨论(下同)。例子:C语言: /动态分配二维数组空间m_iHight=10;二维数组的高度m;/二维数组的宽度/动态分配一个二维数组m_ppTable内存空间其类型为int/m_ppTable 指向该数组int *m_ppTable;m_ppTable=newint *mHight;/动态分配mHight个类型为int *的内存空间/分配的是行地址空间for(int i=0;im_ppTablei= new intm_iWidth;/动态分配m_iWidth个类型为int的内存空间/分配的是某行的数值空间/由此分配的二维数组空间并非是连续的/可以使用m_ppTablerowcol 来给该二维数组赋值/ 其中 0 int Ptr x y ;int *Ptr 5 int Ptr 5 x ;int ( *Ptr ) 5 int Ptr x 5 ;这里x和y是表示若干的意思。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号