C++学习笔记总结练习:nullptr、NULL、0

三者的区别

参考文献

  • 区别

1 说明

C中的NULL

  • C中使用 ((void*)0)表示空指针。NULL会被替换为 ((void*)0)
int *i = NULL;
foo_t *f = NULL;
#define NULL ((void*)0)

C++中的NULL

  • C++中void* 不能进行强制类型转换成其他类型的NULL,所以int* 类型的空指针,不能使用void* 代替,则原来的宏定义无法使用。
  • C++中使用0,来表示空指针。
#ifdef __cplusplus ---简称:cpp c++ 文件
#define NULL 0
#else
#define NULL ((void *)0)
#endif

C++中的0

  • 重载过程中会出现问题,因为空指针会被识别为整形的0,从而导致重载出现错误。
  • 0指针的二义性。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P08a3sF5-1692607890743)(image/2021-03-05-17-00-11.png)]

C++中的nullptr

  • nullptr 关键字,被自动转换为各种pointer类型。但他不会不转换为任何整型类型。防止null作为参数的时候出现函数重载的错误。

主要区别

  • nullptr关键字:nullptr是一种特殊类型的字面值,它可以被转换成任意其它的指针类型;而NULL一般被宏定义为0,在遇到重载时可能会出现问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/52402.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue使用插件vue-seamless-scroll无限滚动列表

链接: vue-seamless-scroll插件文档 安装vue-seamless-scroll npm install vue-seamless-scroll --save引入 1、main.js全局引入 import scroll from vue-seamless-scroll Vue.use(scroll)2、局部引入 import vueSeamlessScroll from vue-seamless-scrollcomponents: {vueS…

【Linux】权限问题

Linux权限 一、Linux 权限的概念二、Linux 权限管理1. 文件访问者的分类2. 文件类型和访问权限(事物属性)3. 文件访问权限的相关设置方法 三、默认权限1. 对文件和目录进行操作需要的权限2. 文件和目录的默认权限3. 粘滞位 一、Linux 权限的概念 Linux …

Linux网络编程1(网络基础定义)

网络早已成为我们日常生活的一部分,经常使用互联网的人很难长时间内离开互联网。你是否好奇你的电脑仅仅插上一根网线,你发给朋友的聊天信息就能准确无误的到达朋友的手机或者电脑上,你是否好奇为何你仅仅在浏览器输入一个网址,点…

亿赛通电子文档安全管理系统 RCE漏洞

亿赛通电子文档安全管理系统 RCE漏洞 一、 产品简介二、 漏洞概述三、 复现环境四、 漏洞复现小龙POC检测: 五、 修复建议 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失…

【Luogu】 P5769 [JSOI2016] 飞机调度

题目链接 点击打开链接 题目解法 考虑可以经停,从 i i i 到 j j j 包括维修在内的最短时间,这是可以通过 f l o y d O ( n 3 ) floyd\;O(n^3) floydO(n3) 求的 这样我们可以维护出一辆飞机是否可以先运行航班 x x x 再运行航班 y y y&#xff0c…

【力扣】77. 组合 <回溯、回溯剪枝>

目录 【力扣】77. 组合题解回溯回溯法三步剪枝优化 【力扣】77. 组合 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按任何顺序返回答案。 示例 1: 输入:n 4, k 2 输出: [[2,4],[3,4],[2,3],[1,2]…

使用ChatGPT构建一个AIML聊天机器人是什么体验

​ 使用ChatGPT构建一个AIML聊天机器人是什么体验,使用ChatGPT将C#代码转换为Swift代码以实现Swift版的Aiml聊天机器人,AIML(全名为Artificial Intelligence Markup Language)是一种基于XML模式匹配的人工智能标记语言&#xff0c…

嵌入式学习之linux

今天,主要对linux文件操作原理进行了学习,主要学习的内容就是对linux文件操作原理进行理解。写的代码如下:

【AI】即使AI 时代,程序员也无需焦虑

🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,目前学习C/C、算法、Python、Java等方向,一个正在慢慢前行的普通人。 🏀系列专栏:陈童学的日记 💡其他专栏:CSTL&…

如何通过以太坊JSON-RPC方式获取ERC-20代币的信息?

目录 一、ERC-20介绍 二、ERC-20代币标准功能 1、可选功能 2、标准功能 三、获取代币信息

LLMs参考资料第一周以及BloombergGPT特定领域的训练 Domain-specific training: BloombergGPT

1. 第1周资源 以下是本周视频中讨论的研究论文的链接。您不需要理解这些论文中讨论的所有技术细节 - 您已经看到了您需要回答讲座视频中的测验的最重要的要点。 然而,如果您想更仔细地查看原始研究,您可以通过以下链接阅读这些论文和文章。 1.1 Trans…

C++:编译与链接

首先要思考问什么要编译与链接,首先这是一个如何把源程序即写好的代码编程可执行文件的过程,简单的加工模型如下图: 这是一个简单的加工模型,比较直观,但是有一个问题,就是如果对源程序进行修改&#xff0c…

Qt基础 线程池

目录 QThreadPool类 QRunnable类 应用场景示例 QThreadPool类 主要属性: 1、activeThreadCount: 此属性表示线程池中的活动线程数,通过activeThreadCount() 调用。 2、expiryTimeout: 线程活着的时间。没有设置expiryTimeout毫秒的线程会自动退出&am…

【PHP】流程控制-ifswitchforwhiledo-whilecontinuebreak

文章目录 流程控制顺序结构分支结构if分支switch分支 循环结构for循环while循环do-while循环continue和break 流程控制 顺序结构:代码从上往下,顺序执行。(代码执行的最基本结构) 分支结构:给定一个条件,…

OAuth2.0 客户端实战

上一次课程,我们了解了 OAuth 认证是怎么回事,以及了解了四种认证方式,今天我们将以 Github 为例,了解一下如何用 Flask 第三方应用 在之前的介绍 JWT 的时候,了解过 Authlib 库,Authlib 是集 JWT、OAuth1…

「Java」《深度解析Java Stream流的优雅数据处理》

《深度解析Java Stream流的优雅数据处理》 一、引言1.1 背景1.2 Stream流的意义 二、Stream流的基本概念2.1 什么是Stream流2.2 Stream与传统集合的对比 三、创建Stream流3.1 通过集合创建Stream3.2 使用Arrays和Stream.of创建Stream3.3 从文件和网络流创建Stream 四、 中间操作…

Go 语言的实战案例 | 青训营

Powered by:NEFU AB-IN 文章目录 Go 语言的实战案例 | 青训营 Go补充简介猜数游戏在线词典项目 Go 语言的实战案例 | 青训营 GO语言工程实践课后作业:实现思路、代码以及路径记录 Go补充简介 在计算机编程领域,Go 语言(也称为 Golang&…

[C++] STL_vector使用与常用接口的模拟实现

文章目录 1、vector的介绍2、vector的使用2.1 vector的定义2.2 vector迭代器的使用2.3 vector的空间增长问题 3、vector的增删查改3.1 push_back(重点)3.2 pop_back(重点)3.3 operator[](重点)3.4 insert3.…

【SQL中DDL DML DQL DCL所包含的命令】

SQL中DDL DML DQL DCL所包含的命令 关于DDL、DML、DQL、DCL的定义和适用范围如下: 数据定义语言(Data Definition Language,DDL): DDL用于创建、修改和删除数据库中的表、视图、索引等对象。它的主要命令包括CREATE、A…

ATA-7000系列高压放大器——应用场景介绍

ATA-7000系列是一款理想的可放大交、直流信号的高压放大器。单端输出20kVp-p(10kVp)高压,可以驱动高压型负载。电压增益数控可调,一键保存常用设置,为您提供了方便简洁的操作选择。 图:ATA-7000系列高压放大…