C++入门【26-C++ Null 指针】

在变量声明的时候,如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯。赋为 NULL 值的指针被称为空指针。

NULL 指针是一个定义在标准库中的值为零的常量。请看下面的程序:

实例

cpp 复制代码
#include <iostream>
using namespace std;
int main ()
{
   int  *ptr = NULL;
   cout << "ptr 的值是 " << ptr ; 
   return 0;
}

当上面的代码被编译和执行时,它会产生下列结果:

ptr 的值是 0

在大多数的操作系统上,程序不允许访问地址为 0 的内存,因为该内存是操作系统保留的。然而,内存地址 0 有特别重要的意义,它表明该指针不指向一个可访问的内存位置。但按照惯例,如果指针包含空值(零值),则假定它不指向任何东西。

如需检查一个空指针,您可以使用 if 语句,如下所示:

if(ptr) /* 如果 ptr 非空,则完成 */

if(!ptr) /* 如果 ptr 为空,则完成 */

因此,如果所有未使用的指针都被赋予空值,同时避免使用空指针,就可以防止误用一个未初始化的指针。很多时候,未初始化的变量存有一些垃圾值,导致程序难以调试。

相关推荐
HelloWorld1024!几秒前
C++中链表的虚拟头结点:应用场景与使用时机
网络·c++·链表
fakerth1 分钟前
【C++】【Linux】从零实现日志库:LogLib 设计与实现详解
c++·日志库
码农幻想梦4 分钟前
实验六 AOP,JdbcTemplate及声明式事务
java·开发语言·数据库
先做个垃圾出来………7 分钟前
Python 中 kwargs.get() 方法详解
开发语言·python
大闲在人12 分钟前
Trae builder 实战: 让 C++ 函数像 Python 一样返回多个值
c++·python·ai编程
PuppyCoding16 分钟前
EasyExcel 导出排除基类字段,不给基类加@ExcelIgnore 的方式。
java·开发语言
源代码•宸19 分钟前
Golang原理剖析(interface)
服务器·开发语言·后端·golang·interface·type·itab
冬奇Lab21 分钟前
【Kotlin系列09】委托机制与属性委托实战:组合优于继承的最佳实践
android·开发语言·kotlin
txinyu的博客21 分钟前
手写 C++ 高性能 Reactor 网络服务器
服务器·网络·c++
Vallelonga22 分钟前
浅谈 Rust bindgen 工具
开发语言·rust