使用 nullptr 检查空指针最安全,推荐 if (ptr == nullptr) 或 if (!ptr),避免 NULL 或 0;优先采用智能指针如 unique_ptr,其自动管理空状态并支持布尔判断,解引用前必须检查以防止段错误。

在C++中,检查指针是否为空是防止程序崩溃的重要步骤。空指针(null pointer)指的是没有指向有效内存地址的指针,直接解引用会导致未定义行为,常见于段错误(segmentation fault)。以下是常用的空指针检查方法。
C++11 引入了 nullptr 作为空指针的推荐表示方式。检查指针是否为空,最清晰安全的方法是与 nullptr 比较。
示例:int* ptr = nullptr;
<p>if (ptr == nullptr) {
// 指针为空,不进行解引用
}
// 或者更常见的写法:
if (!ptr) {
// 等价于 ptr == nullptr
}
虽然传统上使用 NULL(通常定义为 0 或 ((void*)0))或直接写 0 来表示空指针,但它们本质上是整数常量,在函数重载等场景下可能引发类型歧义。推荐统一使用 nullptr 提高代码清晰度和安全性。
不推荐写法:if (ptr == NULL) { ... }
if (ptr == 0) { ... }
</font>现代C++推荐使用智能指针(如 std::unique_ptr 和 std::shared_ptr)代替原始指针。这些类重载了布尔转换操作符,可直接用于条件判断。
立即学习“C++免费学习笔记(深入)”;
示例:<code>std::unique_ptr<int> ptr;
<p>if (!ptr) {
// 指针未持有对象
}</p><p>// 或者显式比较
if (ptr == nullptr) {
// 同样有效
}
任何对原始指针的解引用(如 *ptr 或 ptr->member)前,都应确保其不为空。尤其是在函数参数传递、动态内存分配失败(new 可能抛出异常,但 malloc 返回 nullptr)等场景下。
安全模式:void printValue(int* ptr) {
if (ptr) {
std::cout << *ptr << std::endl;
} else {
std::cout << "Pointer is null" << std::endl;
}
}
基本上就这些。用 if (!ptr) 或 if (ptr == nullptr) 判断即可,优先使用 nullptr,配合智能指针能大幅减少空指针问题。不复杂但容易忽略。
以上就是c++++怎么检查指针是否为空_空指针检查方法的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号