C++ Null 空指针
如果没有确切的地址需要分配,将指针赋值为 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) // 如果 p 不为空,则执行成功 if(!ptr) // 如果 p 为空,则执行成功
因此,如果所有未使用的指针都被赋值为空值,并且避免使用空指针,则可以避免意外滥用未初始化的指针。很多时候,未初始化的变量会保存一些垃圾值,这会给程序的调试带来困难。