C/C++ 核心之一 指针与数组
2011-04-19 21:24
225 查看
关于指针,谈一点自己的认识。
(1) 指针本质上就是一个地址,指针所占的byte数目只跟系统位数有关,与指针所指向的类型无关。
(2) p+1,指针移动的byte数目直接决定于指针所指向的数据类型。因此在移动指针的时候,首先应该搞清楚p所指向的数据类型。
(3) 定义指针时,如果指向的类型为TYPE,那么就需要定义TYPE* 类型的指针。
比较指向的类型为int*, 那么就要定义int**类型的指针
(4)指向单个元素的指针和指向多个元素的指针(数组指针)
(4.1)如果指向的数据类型相同,所需定义的指针类型也相同。这与(3)中的描述相符合。
(4.2)指向单个元素的指针 和 数组指针, 释放时不同。
(4.3)初始化的方式不同,指向单个元素的指针在分配时可以直接初始化,而数组指针不可以初始化。
例1:
int *p1=NULL
int *p2 = NULL;
int n = 3;
p1 = new int; // 指向单个元素(无名变量)
p2 = new int
// 指向n个元素(多个变量), p2 指向该数组的定义元素
p2++; // p2指向了下一个元素
delete p1;
delete []p2; //看到却别了吧,如果delete p2只会释放p2所指向的单个元素
p1 = null;
P2 =null; //防止野指针的发生,养成好的习惯,可以预防无数的bug
例2:
int *p;
classA *pA;
classA *pB;
int n = 5;
p = new int(5); //初始化为5
pA= new classA(paramter1, paramter2); //先分配内存,然后调用带参数的构造函数进行初始化
PB= new classB
; //先分配内存,必须定义无参数构造函数(如果定义了有参数的构造函数,缺省的构造函数不会产生)
....
(5)二级指针
(1) 指针本质上就是一个地址,指针所占的byte数目只跟系统位数有关,与指针所指向的类型无关。
(2) p+1,指针移动的byte数目直接决定于指针所指向的数据类型。因此在移动指针的时候,首先应该搞清楚p所指向的数据类型。
(3) 定义指针时,如果指向的类型为TYPE,那么就需要定义TYPE* 类型的指针。
比较指向的类型为int*, 那么就要定义int**类型的指针
(4)指向单个元素的指针和指向多个元素的指针(数组指针)
(4.1)如果指向的数据类型相同,所需定义的指针类型也相同。这与(3)中的描述相符合。
(4.2)指向单个元素的指针 和 数组指针, 释放时不同。
(4.3)初始化的方式不同,指向单个元素的指针在分配时可以直接初始化,而数组指针不可以初始化。
例1:
int *p1=NULL
int *p2 = NULL;
int n = 3;
p1 = new int; // 指向单个元素(无名变量)
p2 = new int
// 指向n个元素(多个变量), p2 指向该数组的定义元素
p2++; // p2指向了下一个元素
delete p1;
delete []p2; //看到却别了吧,如果delete p2只会释放p2所指向的单个元素
p1 = null;
P2 =null; //防止野指针的发生,养成好的习惯,可以预防无数的bug
例2:
int *p;
classA *pA;
classA *pB;
int n = 5;
p = new int(5); //初始化为5
pA= new classA(paramter1, paramter2); //先分配内存,然后调用带参数的构造函数进行初始化
PB= new classB
; //先分配内存,必须定义无参数构造函数(如果定义了有参数的构造函数,缺省的构造函数不会产生)
....
(5)二级指针
相关文章推荐
- 内存分配详解、指针与数组[C++][内存管理] --转载于--Gaius Julius Caesar
- C++基础学习系列第一部分——再议数组与指针
- 详解C++中的指针结构体数组以及指向结构体变量的指针
- C++ PRIMER之4 数组和指针
- 对C++中指向数组类型的指针的理解
- 内存分配详解、指针与数组[C++][内存管理]
- C++中的指针、数组指针与指针数组、函数指针与指针函数
- 数组与指针的艺术--深入探索c/c++数组与指针的奥秘
- C++数组类型基础及数组指针基础
- 【C++的探索路3】数组与指针
- 【C++】指针和数组之区别
- C++ 3维数组指针声明的3种方式
- C/C++指针与const、数组、函数
- C++指针数组、数组指针、数组名及二维数组技巧汇总
- C/C++数组名与指针区别深入探索
- C++中数组作为形参时,实际传的是指针
- 关于C++中的指针、数组
- C/C++数组名与指针区别深层探索
- 第03章 CORE C++_枚举_数组_结构_指针(I)
- 动态创建二维vector数组 C和C++ 及指针与引用的区别