C语言处理未初始化指针

指针本身并不能告诉我们它是否有效,所以,不能只靠检查指针的内容来判断它是否有效。不过,有三种方法可以用来处理未初始化的指针:

  • 总是用NULL来初始化指针;
  • assert函数;
  • 用第三方工具。

把指针初始化为NULL更容易检查是否使用正确。即便这样,检查空值也比较麻烦,如下所示:

int *pi = NULL;
...
if(pi == NULL) {
    // 不应该解引pi
} else {
    // 可以使用pi
}

我们可以用assert函数来测试指针是否为空值。下例测试了pi变量是否为空值。如果表达式为真,那么什么都不会发生,如果表达式为假,程序会终止。这样,指针为空的话程序就会终止。

assert(pi != NULL);

对于应用程序的调试版本,这种方法可能可以接受。如果指针是空值,输出类似下面:

Assertion failed: pi != NULL

我们在assert.h头文件中声明assert函数。

可使用第三方工具来帮助定位这类问题,此外,有些编译器选项也比较有用。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程