C++如何判断指针是否为空指针
时间: 2024-12-26 17:22:30 浏览: 8
### C++ 中检查指针是否为空的最佳实践
在现代 C++ 编程中,推荐使用 `nullptr` 来表示空指针而不是传统的 NULL 宏或字面量 0。这不仅提高了代码的可读性和安全性,还减少了潜在错误的发生。
#### 使用 nullptr 进行比较
```cpp
int* ptr = some_function_returning_pointer();
if (ptr == nullptr) {
// 处理指针为空的情况
}
else {
// 正常处理逻辑
}
```
对于函数参数中的指针输入验证同样适用此方法[^1]:
#### 函数参数校验示例
```cpp
void process_data(int* data_ptr) {
if (data_ptr == nullptr) {
throw std::invalid_argument("Pointer cannot be null");
}
// 继续正常操作...
}
```
当涉及到智能指针时(如 unique_ptr 或 shared_ptr),可以直接利用其内置成员函数 `.get()` 获取原始裸指针并进行相同方式的判空;更简洁的方式是直接调用布尔上下文转换运算符来实现同样的效果[^2]:
#### 智能指针判空
```cpp
std::unique_ptr<int> smartPtr;
if (!smartPtr) {
// 当前对象未分配内存资源
}
// 等价于下面这种方式
if (smartPtr.get() == nullptr) {
// 同样表示当前对象未分配内存资源
}
```
阅读全文