二维数组指针的简单使用

来源:互联网 发布:创业项目ppt运营数据 编辑:程序博客网 时间:2024/06/05 23:46

指针就是可变数组的首地址,是指其包含内容的数量的可变,并且是可动态申请和释放的。

以下是三种二维数组的表现形式

(1)、int  **Ptr ;==========》》》》int Ptr[x][y]

A:表示:“一群”指向整数的指针的指针。

B:在32位平台里,都是4字节,即一个指针。

C:需要两次内存分配才能使用其最终内容。

首先,Ptr = (int**)new int *[5] ,这样分配好了以后,和(2)的意义想通了;

然后要对5个指针进行内存分配。

Ptr[0] = new int[20];它表示为第0个指针分配20个整数,分配好以后,Ptr[0]为指向20个整数的数组。

如果没有第一次内存分配,该Ptr是个“野指针”,是不能使用的,如果没有第二次内存分配,则Ptr[0]也是个“野指针”

(2)、int   *Ptr[5] ; ==============》》》int Ptr[5][x];

A:表示:5个指向整数的指针的指针。

B:它是5个指针,所占的内存空间是5*4 = 20个字节

C:此时,编译器已经为它分配了5个指针的控件,这相当与(1)中的第一次内存分配。

(3)、int   (*Ptr)[5] ;===============》》》》 int  Ptr[x][5]

A:表示:“一群”指向5个整数数组的指针的指针。

B:在32位平台里,都是4字节,即一个指针。

C:“一群”指针,每个指针都是指向一个5个整数的数组。

如果想分配k个指针:Ptr = ( int(*)[5] )new int [ sizeof(int) * 5 * k ]      这是一次性的内存分配。分配好以后,Ptr指向一片连续的地址空间,其中Ptr[0]指向第0个5个整数数组的首地址。Ptr[1]指向第1个5个整数数组的首地址。