复合类型
基于其它类型定义的类型,如:引用、指针
指针
定义:与引用类似,指针也实现了对其他对象的间接访问。而与引用不同的是,其一,指针本身就是一个对象,允许对指针赋值和拷贝,而且在指针的生命周期内它可以先后指向几个不同的对象。其二,指针无须在定义时赋值。
**指针值(即地址)**应处于下四种状态:
- 指向一个对象
- 指向紧邻对象所占空间的下一个位置
- 空指针,意味着指针没有指向任何对象
- 无效指针,上述情况之外的指针
利用指针访问对象
如果指针指向了一个对象,则允许使用解引用符(操作符*)来访问该对象:
某些符号有多重含义
int i = 42;
int &r = i; //&紧随类型名出现,因此是声明的一部分,r是一个引用
int *p; //*紧随类型名出现,因此是声明的一部分,p是一个指针
p = &i; //&出现在表达式中,是一个取地址符
*p = i; //*出现在表达式中,是一个解引用符
int &r2 = *p; //&是神明的一部分,*是一个解引用符
空指针
空指针(null pointer)不指向任何对象,在试图使用一个指针前代码可以首先检查它是否为空。
int *p1 = nullptr; //等价于int *p1 = 0
int *p2 = 0; //直接将p2初始化为字面常量0
int *p3 = NULL; //等价于int *p3 = 0 //#include "cstdlib"
空指针就是对指针的初始化
新标准下现在的C++程序最好使用nullptr,同时避免使用NULL。因为NULL是一种特殊类型的字面值,它可以被转换成任何其他的指针类型。
把int变量直接赋给指针是错误的操作,即使int变量的值恰好为0也不行
int zero = 0;
int *pi;
pi = zero; // WRONG
本文介绍了C++中的指针,包括指针的定义、特性,如何通过指针访问对象,以及空指针的处理。指针作为一个对象,可以改变其所指向的对象,且允许为空。在使用指针前应确保其非空,以避免无效指针。文章强调了使用nullptr作为空指针初始化的推荐做法,避免使用0或NULL以减少潜在的类型转换问题。
2439

被折叠的 条评论
为什么被折叠?



