C++ 空指针
在变量声明时,将指针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
因此,如果将所有未使用的指针赋予空值并避免使用空指针,就可以避免对未初始化指针的意外误用。许多时候,未初始化的变量保存一些垃圾值,这使得调试程序变得困难。