一个很好的做法:在没有确切的地址的情况下,将一个指针变量分配NULL,这样做是在变量声明的时,分配NULL指针被称为空指针。
NULL指针是一个常数为零在几个标准库,其中包括的iostream定义的值。考虑下面的程序:
#include <iostream> using namespace std; int main () { int *ptr = NULL; cout << "The value of ptr is " << ptr ; return 0; }
当上述代码被编译和执行时,它产生了以下结果:
The value of ptr is 0
在大多数操作系统中,程序不允许访问存储器的地址0,因为该存储器是由操作系统保留。然而,存储器地址0具有特别重要的意义;它标志着,该指针不指向一个访问的存储器位置。但按照惯例,如果一个指针包含空(零)值,则假定为指向什么。
要检查一个空指针,可以使用if语句如下:
if(ptr) // succeeds if p is not null if(!ptr) // succeeds if p is null
因此,如果所有未使用的指针被赋予null值,并且避免使用空指针,能避免未初始化的指针意外误操作。很多时候,未初始化的变量举行一些垃圾值,并且变得难以调试程序。