首页 > 编程语言 >C++ Null 指针的使用

C++ Null 指针的使用

时间:2022-10-16 20:13:27浏览次数:73  
标签:NULL 定义 void C++ Null ptr 指针

原文链接:https://www.zhoubotong.site/post/85.html

这里有必要说下关于空指针的使用注意事项, C++ 中,如果一个指针不指向任何数据,就称之为空指针,用 NULL 表示。
注意,NULL 是区分大小写的,即 NULL 不能写成 null。

C++ NULL指针

定义

#define NULL ((void *)0)

说明

(void *)0 表示把数值 0 强制转换为 void * 类型,最外层的 ( ) 把 宏定义 的内容括起来,进行宏定义时也推荐这么做,防止发生歧义。

头文件

NULL 定义在 stdio.h 头文件中。

举个例子吧:

#include <iostream>
using namespace std;
int main()
{
    cout << "草堂笔记(www.zhoubotong.site)\\n" << endl;
    int *ptr ;
    cout << "ptr  = " << ptr  << endl;
    return 0;
}

输出:

image.png

上面我们定义了一个指针,该指针没有进行任何的初始化,接着,我们打印了该指针变量的值,我们发现,输出是 0,当然也可以像下面这样定义:

#include <iostream>
using namespace std;
int main() {
  cout << "草堂笔记(www.zhoubotong.site)\\n" << endl;
  int *ptr = NULL;
  cout << "ptr  = " << ptr << endl;
  if (!ptr) {
    cout << "prt为空指针\\n" << endl;
  }
  return 0;
}

输出:

image.png

上面我们显式的将指针变量 pa 赋值为了 NULL,在大多数的操作系统上,程序不允许访问地址为 0 的内存,
因为该内存是操作系统保留的。但是内存地址 0 有特别重要的意义,它表明该指针不指向一个可访问的内存位置。

但是按照惯例,如果指针包含空值(零值),则表示它不指向任何东西。
上面我们用if判断空指针,这里顺带说明下, 如需检查一个空指针,我们可以使用 if 语句:

if(ptr)     \* 如果 ptr 非空 */
if(!ptr)    \* 如果 ptr 为空 */

总结:

我们在定义指针时或者指针使用完毕,不再使用时,推荐将指针设置为 NULL,表明该指针不再指向任何数据。

标签:NULL,定义,void,C++,Null,ptr,指针
From: https://www.cnblogs.com/phpper/p/16796958.html

相关文章

  • C/C++排班系统
    C/C++排班系统程序设计题1:排班系统出题人:梁志红面向专业:人文地理与城乡规划劳动与社会保障公共事业管理难度等级:31问题描述某单位有7名保安人员,要求每个人在一......
  • Leetcode 6207 -- dp/思维/双指针
    题目描述maxmin思路思维代码classSolution{funccountSubarrays(_nums:[Int],_minK:Int,_maxK:Int)->Int{letsegments=nums.split......
  • C++获取时间戳 秒、微妙、纳秒
    转自:https://blog.csdn.net/CAIYUNFREEDOM/article/details/75388111,https://www.runoob.com/w3cnote/cpp-time_t.html1.例子#include<iostream>#include<sys/time.h......
  • C++设计模式
    简单工厂模式简单工厂模式就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。不需要管它内部的具体实现,只要告诉它你的需求即可,就可以在不同条件下创建不同实例......
  • C++学生管理系统
    C++学生管理系统学生管理系统:1.设计要求角色划分:管理员、老师、学生。登录管理:根据用户名、密码、用户类型进行登录验证,登录后可以修改密码。档案管理:实现对用户个人......
  • c++入门
    一共包含三个部分:1-c++基础语法;2-c++核心编程;3-c++提高编程准备阶段:visualstudio:创建项目:创建新项目->visualC++->空项目->名称(自定义)......
  • 入门C++
    前言对于奥赛而言,入门C++,可以从写出一个能输出hello,world!的程序开始,在本文中,主要介绍如何从0开始编写一个简单的程序。编译器要想编写出一个能正常运行的程序,你需......
  • C++补丁
    目录文件in/out文件in/out读取数组整行读取字符串......
  • C++ 实现随机数生成(Windows、Linux)
    1、简介计算机的随机数都是由伪随机数,即是由小M多项式序列生成的,其中产生每个小序列都有一个初始值,即随机种子。(注意:小M多项式序列的周期是65535,即每次利用一个随机种子生......
  • 第4章 C++ STL无序关联式容器总结
    除了序列式容器和关联式容器之外,C++11标准库又引入了一类容器,即无序关联式容器。 无序关联式容器,又称哈希容器。和关联式容器一样,此类容器存储的也是键值对元素;不同之......