面试C++(基础篇)-NULL与nullptr的区别?
3: NULL与nullptr的区别?
在C++中,NULL和nullptr都用于表示空指针,但它们之间存在一些关键的区别:
- 1. 来源和含义:
- •
NULL:在C++中,NULL最初是从C语言中继承过来的,定义在<cstddef>头文件中。它通常被定义为0(在32位系统上)或0L(在64位系统上),具体取决于平台和编译器。NULL是一个空指针的通用表示,但不保证其类型为nullptr。 - •
nullptr:C++11引入了nullptr,它是一个字面量,类型为std::nullptr_t。nullptr是C++的现代、类型安全的空指针表示,可以被隐式转换为任何指针类型和任何成员指针类型。
- •
- 2. 类型安全:
- •
NULL:由于NULL可能只是一个简单的整数常量,它在转换为指针时可能会引起类型安全问题。 - •
nullptr:nullptr是类型安全的,它保证可以安全地转换为任何指针类型,而不会引起类型错误或二义性。
- •
- 3. 重载解析:
- • 当函数重载存在指针参数和非指针参数时,使用
NULL可能会导致歧义,因为NULL可以转换为整数类型。 - •
nullptr不会有这个问题,因为它只能转换为指针类型,这使得函数重载更加清晰。
- • 当函数重载存在指针参数和非指针参数时,使用
- 4. 代码可移植性:
- • 使用
NULL可能会导致代码在不同平台或编译器上的行为不一致,因为NULL的定义可能不同。 - •
nullptr提供了更好的可移植性,因为它在所有平台上的行为都是一致的。
- • 使用
- 5. 使用建议:
- • 在C++代码中,推荐使用
nullptr而不是NULL,因为它提供了更好的类型安全性和清晰性。 示例代码:
- • 在C++代码中,推荐使用
void foo(int i) {}
void foo(void* p) {}int main() {foo(NULL); // 错误:NULL可以转换为整数类型,导致调用foo(int i)foo(nullptr); // 正确:调用foo(void* p)
}
总结来说,nullptr是C++11及以后版本中推荐的空指针字面量,它提供了比NULL更好的类型安全性和可移植性。在现代C++编程中,应优先使用nullptr。
最新原创的文章都先发布在公众号,欢迎关注哦, 扫描下方二维码回复「资料」可以获得我汇总整理的计算机学习资料~

相关文章:
面试C++(基础篇)-NULL与nullptr的区别?
3: NULL与nullptr的区别? 在C中,NULL和nullptr都用于表示空指针,但它们之间存在一些关键的区别: 1. 来源和含义: • NULL:在C中,NULL最初是从C语言中继承过来的,定义在<cstddef…...
「AIGC」深度学习
深度学习是机器学习的一个子领域,它基于人工神经网络的学习算法。深度学习在图像和语音识别、自然语言处理、医学图像分析、药物发现、自动驾驶汽车等领域取得了显著的进展。以下是围绕深度学习的几个关键主题的阐述。 学习路线 基础数学: 了解线性代数…...
mysql5.7数据库安装及性能测试
mysql5.7数据库安装及性能测试 记录Centos7.9下安装mysql 5.7并利用benchmark工具简单测试mysql的性能。 测试机:centos7.9 配置:4C8G40G 1. 下安装mysql5.7 安装mysql5.7: # 通过官方镜像源安装$ wget http://dev.mysql.com/get/mysql57-com…...
聪明与诚实:社会信任的桥梁
在现代社会中,我们经常听到这样的评价:“某人真聪明。”然而,当我们深入思考时,会发现“聪明”这个词背后所承载的含义并不单一。聪明和狡诈往往被混淆,而诚实的价值却时常被忽视。在一个高度诚信的社会里,…...
基于单片机的无线数据传输系统设计
摘要:基于单片机的无线数据传输系统的设计,实现了温度和湿度的自动采集、无线通讯和报警功能。该系统包括了LCD1602显示电路、DHT11温湿度采集电路等,完成了基于无线数据传输的方法来实现温湿度的采集。 关键词:温湿度检测;N RF 24 L 01;单片机 0 引言 随着科技水平的提高,…...
【IP:Internet Protocol,子网(Subnets),IPv6:动机,层次编址:路由聚集(rout aggregation)】
文章目录 IP:Internet Protocol互联网的的网络层IP分片和重组(Fragmentation & Reassembly)IP编址:引论子网(Subnets)特殊IP地址IP 编址: CIDR子网掩码(Subnet mask)转发表和转发…...
智启算力平台基本操作
智启算力平台 智启算力平台路径搭载数据集搭载镜像配置 智启算力平台 开发文档 帮助文档 - OpenI - 启智AI开源社区 路径搭载 OpenIOSSG/promote: 启智AI协作平台首页推荐组织及推荐项目申请。 - notice/Other_notes/SDKGetPath.md at master - promote - OpenI - 启智AI开…...
微信小程序 【关键部分】
1. 动机 最近在开发小程序,小程序既需兼顾针对新用户的内容预览,又要为注册用户提供服务,简单梳理下,基本需求如下: 小程序共三个tab页,所有用户都可以浏览首页内容,了解我们可以提供的优质服…...
JavaEE技术之MySql高级(索引、索引优化、sql实战、View视图、Mysql日志和锁、多版本并发控制)
文章目录 1. MySQL简介2. MySQL安装2.1 MySQL8新特性2.2 安装MySQL2.2.1 在docker中创建并启动MySQL容器:2.2.2 修改mysql密码2.2.3 重启mysql容器2.2.4 常见问题解决 2.3 字符集问题2.4 远程访问MySQL(用户与权限管理)2.4.0 远程连接问题1、防火墙2、账号不支持远程…...
OCR文本识别模型CRNN
CRNN网络结构 论文地址:https://arxiv.org/pdf/1507.05717 参考:https://blog.csdn.net/xiaosongshine/article/details/112198145 git:https://github.com/shuyeah2356/crnn.pytorch CRNN文本识别实现端到端的不定长文本识别。 CRNN网络把包含三部分&…...
【数据结构】闲谈A股实时交易的数据结构-队列
今天有点忙,特意早起,要不先写点什么。看到个股的红红绿绿, 突然兴起,要不写篇文章分析下A股交易的简易版数据结构。 在A股实时股票交易系统中,按照个人理解,大致会用队列来完成整个交易。队列(…...
深入探索van Emde Boas树:原理、操作与C语言实现
van Emde Boas (vEB) 树是一种高效的数据结构,用于处理整数集合。它是由荷兰计算机科学家Jan van Emde Boas在1977年提出的。vEB树在处理整数集合的查找、插入、删除和迭代操作时,能够以接近最优的时间复杂度运行。vEB树特别适合于那些元素数量在某个较小…...
正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-14-主频和时钟配置
前言: 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…...
tomcat打开乱码修改端口
将UTF-8改成GBK 如果端口冲突,需要修改tomcat的端口...
03 JavaSE-- 访问控制权限、接口、抽象类、内部类、Object类、异常
1. Exception 异常 在 Java 中,异常分为两种主要类型:强制性异常(Checked Exceptions)和非强制性异常(Unchecked Exceptions)。 强制性异常(Checked Exceptions): 强制…...
free5gc+ueransim操作
启动free5gc容器 cd ~/free5gc-compose docker-compose up -d 记录虚拟网卡地址,eth0 ifconfig 查看并记录amf网元的ip地址 sudo docker inspect amf "IPAddress"那一行,后面记录的即是amf的ip地址 记录上述两个ip地址,完成UER…...
麦肯锡精英高效阅读法笔记
系列文章目录 如何有效阅读一本书笔记 读懂一本书笔记 麦肯锡精英高效阅读法笔记 文章目录 系列文章目录序章 无法读书的5个理由无法读书的理由① 忙于工作,没时间读书无法读书的理由② 不知应该读什么无法读书的理由③ 没读完的书不断增多无法读书的理由④ 工作繁…...
高速、简单、安全的以太彩光,锐捷网络发布极简以太全光 3.X 方案
从 2021 年 3 月正式推出到现在,锐捷网络极简以太全光方案已经走进第四个年头。IT 仍在不断向前发展,数字化进程深入,数字化业务增多,更广泛的终端设备接入企业级园区网络,对园区网络提出了更高的要求,例如…...
图书管理系统
一、图书管理系统菜单 🍓管理员菜单 1.查找图书 2.新增图书 3.删除图书 4.显示图书 0.退出系统 --------------------------------------------------------------------------------------------------------------------------------- 🌼用户菜…...
图解HTTP(2、简单的 HTTP 协议)
HTTP 协议用于客户端和服务器端之间的通信 请求访问文本或图像等资源的一端称为客户端,而提供资源响应的一端称为服务器端。 通过请求和响应的交换达成通信 请求必定由客户端发出,而服务器端回复响应报文 请求报文是由请求方法、请求 URI、协议版本、…...
别再只用结构体了!C++17/20实战中std::tuple的5个高效替代场景(附代码)
别再只用结构体了!C17/20实战中std::tuple的5个高效替代场景(附代码) 当我们需要在C中组合多个不同类型的数据时,结构体(struct)通常是首选方案。但现代C(特别是C17/20)中的std::tuple提供了一种更灵活的选…...
嵌入式开源项目高效学习指南:从筛选评估到深度贡献
1. 项目概述:为什么我们需要一份“开源项目精选”?如果你是一名嵌入式开发者,或者正在向这个领域转型,那么你一定经历过这样的时刻:GitHub上项目浩如烟海,技术论坛帖子日更千条,想找一个靠谱的、…...
Commit Mono版本管理指南:如何优雅地升级和回滚字体版本
Commit Mono版本管理指南:如何优雅地升级和回滚字体版本 【免费下载链接】commit-mono Commit Mono is an anonymous and neutral programming typeface. 项目地址: https://gitcode.com/gh_mirrors/co/commit-mono Commit Mono是一款匿名且中性的编程字体&a…...
实测 DeepSeek-V4 接入 Hermes:一句话爬取几十个网页,真的丝滑!
你好,我是郭震OpenClaw龙虾使用有一段时间了,体感很好,即便使用本地模型,如Qwen3.5:9B这样的模型,养虾Token自由,回复也比较丝滑。如下所示,轻松生成HTML风格的文件结构树:也能轻松生…...
VIGOR:跨越“一对一”检索的理想假设,面向真实场景的跨视角地理定位数据集
一、数据集背景与开创性意义 VIGOR (Cross-View Image Geo-localization beyond One-to-one Retrieval) 是一个面向真实世界应用的全新大规模跨视角图像地理定位基准数据集,由 Sijie Zhu, Taojiannan Yang 和 Chen Chen 提出,相关论文发表于 CVPR 2021。…...
Skill 不是 Prompt 模板,而是 Code Agent 的领域知识接口
很多人第一次把 Code Agent 接进老项目,都会经历一个落差: Demo 里它能十分钟写完一个 CRUD;一进真实业务系统,它开始犯一些“刚入职新人”才会犯的错。 它能看懂 Controller,却不知道这个字段为什么不能改ÿ…...
【Web安全】JWT常见安全漏洞总结
文章目录前言1. JWT基础与漏洞概述2. JWT核心漏洞解析2.1 未校验签名2.1.1 漏洞原理2.1.2 利用方式2.1.3 实战脚本2.2 算法篡改漏洞2.2.1 漏洞原理2.2.2 核心说明2.2.3 攻击流程2.3 弱密钥漏洞2.3.1 漏洞原理2.3.2 利用方式2.4 垂直越权2.4.1 漏洞原理2.4.2 利用流程2.5 KID字段…...
AI临床研究助手会先在哪些环节跑出来,真正的效率杠杆是什么
AI 临床研究助手最先落地的地方,不会是直接替代研究者做关键判断,而是进入高频、重复、可审计、边界清晰的研究流程节点。本文从技术架构角度拆解它会优先出现在哪些环节,以及开发团队如何用 workflow engine、LLM API、audit log 和 metrics…...
初次使用 Taotoken 控制台的快速浏览与核心功能导引
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 初次使用 Taotoken 控制台的快速浏览与核心功能导引 当你注册并登录 Taotoken 平台后,首先进入的就是用户控制台。这个…...
别再只把JTAG当烧录器了!一文搞懂它的边界扫描(Boundary-Scan)到底怎么玩
解锁JTAG边界扫描的隐藏技能:从烧录到硬件诊断的全能玩法 在嵌入式开发领域,JTAG接口常被简化为"烧录工具"的代名词——这种认知偏差让我们错失了它最强大的能力。想象一下:当PCB上某个关键信号无法测量时,当BGA封装的芯…...
