空指针
空指针不指向任何对象,在试图使用一个指针之前可以检查它是否为空。以下列出几个生成空指针的方法:
int *p1=nullptr;
int *p2=0;
int *p3=NULL;
过去的程序还会用到一个名为NULL的预处理变量来给指针赋值,这个变量在头文件cstdlib中定义,它的值就是0.在新的标准下,现在的C++程序最好使用nullstr,同时尽量避免使用NULL。
只要指针拥有一个合法值,就能将它用在条件表达式中。和采用算术值作为条件遵循的规则类似,如果指针的值为0,条件取false:
int ival=1024;
int *pi=0; //pi合法是一个空指针
int *pi2=&ival; //pi2是一个合法的指针,存放着ival地址
if(pi) //pi的值是0,因此条件的值是false
.......
if(pi2) //pi2指向ival,因此它的值不是0,条件的值是true
.......
double obj=3.14,*pd=&obj;
void *pv=&obj; //正确,void*可以存放任意类型对象的地址,obj可以是任意类型的对象
pv=pd; //pv可以存放任意类型的指针
利用void*指针能做的事情比较有限:拿它和别的指针比较,作为函数的输出和输入,或赋给另外一个void*指针。不能直接操作void*指针所指的对象。