C++空指针(nullptr)

ops/2024/10/10 11:25:26/

C++空指针(nullptr)

​ 在C语言中我们把空指针定义成NULL,但是这在C++中会有所问题,因为C++对指针类型转换比较严格。下面让我来深入了解一下NULL与nullptr。

NULL实际就是一个宏,在C头文件(stddef.h)中,可以看到如下代码:

#ifndef NULL#ifdef __cplusplus#define NULL 0#else#define NULL ((void *)0)#endif
#endif

如此可知,C++中NULL被定义为字面常量0,C中NULL被定义为无类型指针(void*)的常量。

示例:

#include <iostream>
using namespace std;
void f(int x)
{cout << "f(int x)" << endl;
}void f(int* ptr)
{cout << "f(int* ptr)" << endl;
}
int main()
{f(0);f(NULL);// f((void*)0);	// 报错:没有重载函数可以转换所有参数类型f(nullptr);return 0;
}

在这里插入图片描述

通过 f((void*)0) 我们可以知道C++对指针类型转换比较严格,无法将 void* 类型转换成 int*。所以C++11引入了一个关键字nulltr用来表示空指针。

nullptr是一种特殊类型的字面量,它可以转换成任意其他类型的指针类型。使用nullptr定义空指针可以避免类型转换的问题,因为nullptr只能被隐式地转换为指针类型,而不能转换为整型类型。

示例:

#include <iostream>
using namespace std;
int main()
{//int a = nullptr;	// 报错:error C2440: “初始化”: 无法从“nullptr”转换为“int”int* p = nullptr;return 0;
}

http://www.ppmy.cn/ops/90170.html

相关文章

qaxobject 插入图片 excel

要在Excel中使用QAxObject插入图片&#xff0c;你需要使用Qt的ActiveX支持。以下是一个简单的例子&#xff0c;展示如何使用QAxObject插入图片到Excel工作表的指定位置。 请确保你的系统上安装了Excel&#xff0c;并且你的Qt版本支持ActiveX。 #include <QAxObject> vo…

[kimi笔记].net平台

.NET 是一个由微软公司开发的软件开发平台&#xff0c;它的历史可以追溯到2000年左右。.NET 框架最初是为Windows操作系统设计的&#xff0c;但随着时间的发展&#xff0c;微软逐步扩展了.NET 的应用范围&#xff0c;使其可以在多个平台上运行。以下是.NET 几个平台的历史和平台…

linux pidstat

pidstat是一个监控个别进程在Linux系统上的资源使用情况的工具&#xff0c;它是sysstat工具包的一部分。pidstat可以报告CPU、内存、I/O、上下文切换、线程等多方面的统计信息&#xff0c;对于性能分析和问题诊断非常有用。 基本用法 pidstat [选项] [间隔] [次数]选项&#…

MySQL —— 初始数据库

数据库概念 在学习数据库之前&#xff0c;大家保存数据要么是在程序运行期间&#xff0c;例如&#xff1a;在学习编程语言的时候&#xff0c;大家写过的管理系统&#xff0c;运用一些简单的数据结构&#xff08;例如顺序表&#xff09;来组织数据&#xff0c;可是程序一旦结束…

Flink Sql Redis Connector 新版本来袭

1.新版本功能和性能介绍 1.1 流批一体 新版本使用了Flink最新的Source接口和SinkWriter接口&#xff0c;可以使用一套代码完成流式读取数据和批量读取数据 1.2 吞吐量大 新版本使用jedispipline和jedisClusterPipeline对数据进行写入和读取&#xff0c;每分钟可以达到千万级…

代码随想录算法训练营day36|动态规划part04

第一题&#xff1a;1049. Last Stone Weight II 一维数组版本 class Solution {public int lastStoneWeightII(int[] stones) {int sum 0;for (int i : stones) {sum i;}int target sum >> 1;//初始化dp数组int[] dp new int[target 1];for (int i 0; i < sto…

【深度学习】【语音】TTS,StyleTTS 2,论文

StyleTTS 2 是一款创新的文本转语音(TTS)模型,通过使用样式扩散和大规模语音语言模型(SLM)的对抗训练,实现了接近人类水平的TTS合成。以下是StyleTTS 2在技术上的几个关键点和其在性能上的突出表现: 技术重点 样式扩散(Style Diffusion): StyleTTS 2 将语音样式建模…

中建海龙科技模块化集成建筑(MiC建筑):高效省时,建筑新选择

在当今快速发展的建筑行业中&#xff0c;时间成本往往成为制约项目进度的关键因素。中建海龙科技凭借其原创的模块化集成建筑&#xff08;MiC建筑&#xff09;技术&#xff0c;不仅实现了建筑的高质量、高效率&#xff0c;更在节省时间方面展现出了显著优势。 模块化集成建筑&…