C++中的指针空值nullptr
一、nullptr的引入
在C++98中,通常是用NULL或者0对指针变量进行初始化
int* p1 = NULL;
int* p2 = 0;
NULL其实一个宏,本质是0,在传统C头文件stddef.h中给可以看到如下代码
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
可以看到,NULL本质上其实是字面常量0或者无类型指针(void*)的常量,所以在使用NULL时会遇到一些麻烦:
对于如下的两个重载函数,func(NULL)本意是调用第二个函数,结果却是调用了第一个函数
void func(int x)
{cout << "void func(int x)" << endl;
}void func(int* x)
{cout << "void func(int* x)" << endl;
}int main()
{func(0);func(NULL);return 0;
}
由此C++11中引入了关键字nullptr,可以使用nullptr来初始化指针变量,不会再发生上述问题
二、nullptr的细节
1.使用nullptr表示指针空值时,不需要包含头文件,因为nullptr时C++11作为新关键字引入的
2.在C++11中,sizeof(nullptr)与sizeof((void*)0)所占字节数相同
3.后续表示指针空值时,用nullptr替代NULL,提高代码的健壮性
相关文章:

C++中的指针空值nullptr
一、nullptr的引入 在C98中,通常是用NULL或者0对指针变量进行初始化 int* p1 NULL; int* p2 0; NULL其实一个宏,本质是0,在传统C头文件stddef.h中给可以看到如下代码 #ifndef NULL #ifdef __cplusplus #define NULL 0 #else #define …...

【Linux网络编程】网络编程套接字(1)
【Linux网络编程】网络编程套接字(1) 目录 【Linux网络编程】网络编程套接字(1)源IP地址和目的IP地址端口号端口号和进程ID的关系 网络通信TCP协议UDP协议网络字节序socket编程接口简单的UDP网络程序 作者:爱写代码的刚子 时间:2024.1.29 前言࿱…...

vite+ts+vue3打包的过程和错误
文章目录 概要vite.config.ts配置tsconfig.json 的配置package.json 的配置路由配置打包打开打包后的文件小结 概要 完成vite的打包,和在本地打开页面 记录一下,vite打包过程中的问题!!! vite.config.ts配置 vite.config.ts配置打包的相关配置 import…...
80.双指针实现删除有序数组中的重复项 II(中等)-面试经典150题
题目 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 说明…...

基于大数据的B站数据分析系统的设计与实现
摘要:随着B站(哔哩哔哩网)在国内视频分享平台的崛起,用户规模和数据量不断增加。为了更好地理解和利用这些海量的B站数据,设计并实现了一套基于Python的B站数据分析系统。该系统采用了layui作为前端框架、Flask作为后端…...

机器学习模型预测贷款审批
机器学习模型预测贷款审批 作者:i阿极 作者简介:数据分析领域优质创作者、多项比赛获奖者:博主个人首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论&…...

Linux实验记录:使用firewalld
前言: 本文是一篇关于Linux系统初学者的实验记录。 参考书籍:《Linux就该这么学》 实验环境: VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 备注: RHEL8系统中集成了多款防火墙管理工具…...

Vue之初识Vue CLI 脚手架
Vue CLI 是Vue 官方提供的一个全局命令工具 可以帮助我们快速创建一个开发Vue项目的标准化基础架子。【集成了webpack配置】 脚手架有什么好处? 1.开箱即用,零配置 2.内置 babel 等工具 3.标准化 使用步骤: 1.全局安装(一次):yarn globaladd vue/cli …...

[Tcpdump] 网络抓包工具使用教程
往期回顾 海思 tcpdump 移植开发详解海思 tcpdump 移植开发详解 前言 上一节,我们已经讲解了在海思平台如何基于静态库生成 tcpdump 工具,本节将作为上一节的拓展内容。 一、tcpdump 简介 「 tcpdump 」是一款强大的网络抓包工具,它基于…...

MongoDB常用命令
3.1 案例需求 存放文章评论的数据存放到MongoDB中,数据结构参考如下: 数据库:articledb 3.2 数据库操作 3.2.1 选择和创建数据库 选择和创建数据库的语法格式: use 数据库名称 如果数据库不存在则自动创建,例如&a…...

强敌环伺:金融业信息安全威胁分析——整体态势
从早期的Zeus和其他以银行为目标的特洛伊木马程序,到现在的大规模分布式拒绝服务(DDoS)攻击,再到新颖的钓鱼攻击和勒索软件,金融服务业已成为遭遇网络犯罪威胁最严重的行业之一。金融服务业的重要性不言而喻࿰…...
FreeRTOS简介
一 FreeRTOS简介 实时操作系统(Real-Time Operating System,RTOS)是一种专门设计用于处理实时任务的操作系统。它的主要作用是提供具有严格时间约束的任务调度和资源管理,以满足实时系统对时间的要求。 可分为硬实时和软实时&am…...
51单片机点灯
51单片机点灯 1.点亮LED灯 #include "reg52.h"sbit ledOne P3^7;void main() {//灯亮,给一个P3.7低电平ledOne 0; }给LED1对应标号的P3^7一个低电平,就能点亮LED灯2.LED灯闪烁 #include "reg52.h"sbit ledOne P3^7;void Delay…...
sql注入之union联合注入
一、Union注入 联合查询注入是联合两个表进行注入攻击,使用关键词 union select 对两个表进行联合查询。两个表的字段数要相同,不然会出现报错。列数相同 union 特性是显示两张表 我们就可以吧第一个参数变为------负--的 或者不存在的值 就行了 显示就…...
activiti解决实现ExecutionListener spring 自动注入@Autowired为null问题
在 Activiti 中,当使用 ExecutionListener 时,Spring 的自动注入机制(例如 Autowired)可能无法正常工作。这是因为 ExecutionListener 是由 Activiti 管理的,并不是由 Spring 管理的,所以无法通过 Autowire…...

【Lazy ORM 整合druid 实现mysql监控】
Lazy ORM 整合druid 实现mysql监控 JDK 17 Lazy ORM框架地址 up、up欢迎start、issues 当前项目案例地址 框架版本描述spring-boot3.0.7springboot框架wu-framework-web1.2.2-JDK17-SNAPSHOTweb容器Lazy -ORM1.2.2-JDK17-SNAPSHOTORMmysql-connector-j8.0.33mysql驱动druid-…...

【Deeplabv3+】Ubutu18.04中使用pytorch复现Deeplabv3+第三步)-----CityscapesScripts生成自己的标签
本文是在前面两篇文章的基础上,讲解如何更改训练数据集颜色,需要与前面两篇文章连起来看。 本文用于修改cityscapes数据集的标签颜色与Semankitti数据集的标签一致,对修改后的数据集进行训练。需要下载两个开发工具包和一个数据集࿰…...
《动手学深度学习(PyTorch版)》笔记3.3
注:书中对代码的讲解并不详细,本文对很多细节做了详细注释。另外,书上的源代码是在Jupyter Notebook上运行的,较为分散,本文将代码集中起来,并加以完善,全部用vscode在python 3.9.18下测试通过。…...

OpenGL ES 渲染 NV21、NV12 格式图像有哪些“姿势”?
使用2个纹理实现 NV21 格式图像渲染 前文提到渲染 NV21 格式图像需要使用 2 个纹理,分别用于保存 Y plane 和 UV plane 的数据,然后在片段着色器中分别对 2 个纹理进行采样,转换成 RGB 数据。 OpenGLES 渲染 NV21或 NV12 格式图像需要用到 GL_LUMINANCE 和 GL_LUMINANCE_A…...
P8813 [CSP-J 2022] 乘方 题解
目录 题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示题目简化题目思路AC 代码 观前提示,此题解解法非正解,仅仅是卡过数据才 A C AC AC 的。正解请参考他人博客。 题目描述 小文同学刚刚接触了信息学竞赛…...

stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...

el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...

多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent
安全大模型训练计划:基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标:为安全大模型创建高质量、去偏、符合伦理的训练数据集,涵盖安全相关任务(如有害内容检测、隐私保护、道德推理等)。 1.1 数据收集 描…...