基于其它类型定义的类型,如:引用、指针
指针
定义:与引用类似,指针也实现了对其他对象的间接访问。而与引用不同的是,其一,指针本身就是一个对象,允许对指针赋值和拷贝,而且在指针的生命周期内它可以先后指向几个不同的对象。其二,指针无须在定义时赋值。
**指针值(即地址)**应处于下四种状态:
- 指向一个对象
- 指向紧邻对象所占空间的下一个位置
- 空指针,意味着指针没有指向任何对象
- 无效指针,上述情况之外的指针
如果指针指向了一个对象,则允许使用解引用符( *** 作符*****)来访问该对象:
某些符号有多重含义
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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)