当前位置: 首页 > news >正文

C++ nullptr 和NULL的区别

个人主页:Jason_from_China-CSDN博客

所属栏目:C++系统性学习_Jason_from_China的博客-CSDN博客

概念概述:

在C++中,nullptrNULL 都是用来表示空指针,但它们之间有一些重要的区别:

nullptr和NULL之间的区分

  1. nullptr

    • nullptr 是C++11标准引入的一个关键字,用于表示空指针。
    • 它是类型安全的,意味着它必须被转换为一个指针类型才能使用,这可以防止一些类型错误。
    • nullptr 可以被隐式转换为任何指针类型,包括对象指针、函数指针、成员指针等。
    • 使用 nullptr 可以提高代码的可读性和可维护性。
  2. NULL

    • NULL 是一个宏,通常在 <cstddef> 或 <cstdlib> 头文件中定义为 0 或 (void*)0
    • 它不是类型安全的,因为它本质上是一个整数常量,可以被赋值给任何指针类型,这可能导致类型错误。
    • NULL 可以被隐式转换为任何指针类型,但这种隐式转换可能会隐藏类型错误。

最本质的区别就是:所以为了解决C++引入了新的关键字,nullptr(这里是不能转化成整形的)

nullptr的使用

#include<iostream>
//nullptr(空指针)(不能转化为整形)和null(可以转化为整形)
void _null(int x)
{cout << "_null(int x)=" << x << endl;}
void _nullptr(int* x)
{cout << "_nullptr(int x)=" << x << endl << endl;
}
int main()
{//nullptr(空指针)(不能转化为整形)和null(可以转化为整形)//int a1 = nullptr; cout << "nullptr(空指针)(不能转化为整形)和null:" << endl;_null(NULL);_nullptr(nullptr);return 0;
}

http://www.mrgr.cn/news/26518.html

相关文章:

  • 【系统架构设计】安全性和保密性设计(二)
  • CSP-J 计算机软件系统
  • Kamailio-基于Homer与heplify的SIP信令监控-3
  • 【运算你真的理解吗?】
  • ModuleNotFoundError: No module named ‘transformers_modules.chatglm2-6b
  • Introduction结构
  • 前端基本功——面试必问系列(1):都2024了,还没吃透Promise?一文搞懂
  • Qt基础,布局管理
  • 低空经济火爆:先考个无人机飞行执照傍身
  • 垂直领域大模型微调实践经验最全总结
  • vscode必装插件推荐
  • 实例讲解电动汽车蠕行控制策略及Simulink建模方法
  • 图像滤波---各项异性扩散滤波使用笔记及代码
  • 22222222
  • Day10-作业讲解,Ingress规则编写及Jenkins集成K8S项目实战案例
  • 【PythonCode】力扣Leetcode41~45题Python版
  • 通信工程学习:什么是FDMA频分多址
  • 【30天玩转python】高级数据结构
  • Centos入门必备基础知识
  • R语言机器学习算法实战系列(一):XGBoost算法(eXtreme Gradient Boosting)