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 为空,则完成 */

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

相关推荐
东荷新绿7 小时前
MATLAB 2018a 安装教程:30分钟搞定安装
开发语言·matlab·matlab2018a
松涛和鸣7 小时前
从零开始理解 C 语言函数指针与回调机制
linux·c语言·开发语言·嵌入式硬件·排序算法
2***B4498 小时前
Rust在系统编程中的内存安全
开发语言·后端·rust
U***e638 小时前
Rust错误处理最佳实践
开发语言·后端·rust
习习.y8 小时前
python笔记梳理以及一些题目整理
开发语言·笔记·python
qq_386218998 小时前
Gemini生成的自动搜索和下载论文的python脚本
开发语言·python
o***Z4489 小时前
JavaScript在Node.js中的内存管理
开发语言·javascript·node.js
毕设源码-邱学长9 小时前
【开题答辩全过程】以 基于Java企业人事工资管理系统为例,包含答辩的问题和答案
java·开发语言
颜*鸣&空10 小时前
QT程序实现串口通信案例
开发语言·qt
无限进步_10 小时前
C语言动态内存的二维抽象:用malloc实现灵活的多维数组
c语言·开发语言·数据结构·git·算法·github·visual studio