二维数组指针的简单使用
2017-07-14 08:15
183 查看
指针就是可变数组的首地址,是指其包含内容的数量的可变,并且是可动态申请和释放的。
以下是三种二维数组的表现形式
(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个整数数组的首地址。
以下是三种二维数组的表现形式
(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个整数数组的首地址。
相关文章推荐
- 简单结构体与函数指针的使用
- 指针的简单使用
- C++中智能指针的简单使用
- poj2013---二维数组指针使用
- 若干种使用指针输出二维数组中元素的方式
- C++指针到指针简单使用会报错,记忆力下降没办法了
- Delphi下使用指针的简单总结 推荐
- 使用字符指针实现的一个简单string类
- 二维数组和双重指针的转换及使用
- cocos2dx3.2 C++再谈谈函数指针的简单使用
- 二级指针与二维数组使用误区
- Delphi下使用指针的简单总结
- 有效的使用和设计COM智能指针——条款4:理解ATL的CComPtr提倡简单,高效
- C++的指针的简单使用
- Linux C语言函数指针的简单使用 [李园7舍_404]
- 指针的简单使用
- 使用指针把图片转换成二维数组
- 使用指针传递二维数组参数
- [指针二]指向一维数组、二维数组的指针使用
- 最简单的指针与地址练习(二维数组)0