C++空指针(nullptr)

news2024/11/25 20:38:32

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.coloradmin.cn/o/1985977.html

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

相关文章

vue3学习day03-vue3的生命周期、父子通信、模版引用、defineExpose

11、vue3的生命周期 &#xff08;1&#xff09;Vue2中生命周期&#xff1a; beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、beforeDestroy、destroyed &#xff08;2&#xff09;选项式API的生命周期&#xff1a; BeforeCreate/created、beforeMou…

TCP协议及ip

传输控制协议 通信前必须建立连接 tcp传输数据可靠 这就和大家的qq号和手机号一样 没有完全相同的qq号和手机号 端口号&#xff1a;1-65535 的一个整数 1-1024 通过端口号可确定哪一个程序在运行 应用程序的id 自定义端口号5999之后 在Qt中使用网络通信 套…

Apache Dolphinscheduler在中创新航的落地与实践

背景介绍 我司中创新航&#xff08;CALB&#xff09;&#xff0c;是全球领先的新能源科技企业 &#xff0c;致力于成为能源价值[创造者](<https://baike.baidu.com/item/创造者/10818258?fromModulelemma_inlink" t "/Users/shangeyao/Documents\x/_blank>)&…

directx修复工具:Windows 必备修复工具,一键解决 dll 丢失问题!

电脑出现DLL文件丢失要怎么恢复&#xff1f; 关于电脑系统修复的工具&#xff0c;还是有很多推荐的。金舟DirectX.DLL一键修复是一款强大的系统级工具软件&#xff0c;专门用于修复和恢复操作系统中动态链接库&#xff08;DLL&#xff09;文件的软件工具。软件能够解决由于DLL…

嵌入式--->STM32H7系列DMA寄存器详解

在参考手册中已经有每个寄存器的详细解释&#xff0c;这里做以翻译和调用过程的讲述&#xff0c;仅记录了解到的寄存器&#xff0c;并不全面&#xff0c;仅仅是为了方便查阅 相关中断 如下事件都会产生中断&#xff0c;前提是: •相应的中断事件xx被启用(GPDMA_CxCR)。xxIE 1…

0 元试用,一站式搭建企业云上数据库与BI 数据可视化分析平台

商业环境快速变化&#xff0c;每一次的数据分析和决策的速度都可能直接影响到公司的业务成果。在商业决策过程中&#xff0c;时间就是金钱。 为了加快数据处理&#xff0c;让数据可视化更加智能&#xff0c;我们推出了Sugar BI 和 GaiaDB 组合购&#xff0c;帮助业务快速搭建数…

GPU 片上调度系统

这篇文章分析和说明GPU 片上的kernel 通过stream 作为载体是如何分发到SM 处理器上&#xff0c;同时CUDA 所抽象的grid/block/thread 在GPU 设备层面是如何调度的。调度器通常是被忽略的一个部分&#xff0c;但对CUDA kernel 的编写和后期系统性能分析很有帮助&#xff0c;也可…

春秋云境 | 文件上传 | CVE-2022-28525

目录 靶标介绍 开启靶场 蚁剑连接 获取 flag 靶标介绍 ED01-CMS v20180505 存在任意文件上传漏洞 开启靶场 发现了一个登录功能&#xff0c;使用 burp 爆破一下 爆破之后得到账号是 admin 密码是 admin&#xff0c;登录后是这样的页面 在左边的菜单栏挨着一个一个找&…

天地图按地名搜索+openlayer+vue3

使用element-plus组件库安装ol npm i ol -s 安装axios (调用天地图api http://lbs.tianditu.gov.cn/server/search.html) npm i axios -s 主要代码 <template><div class"my-add-maker-box"><div class"my-point-box"><span>经…

直接用文件方式安装Cuda版本的Pytorch

先查看当前安装好的Cuda版本&#xff1a; 采用pip install 文件 方式安装本地的whl文件&#xff1a; 注意whl文件已经提前下载好了&#xff1a; 然后开始安装&#xff1a; 解压安装途中&#xff0c;相关的包也重新下载&#xff1a; 继续安装&#xff1a; 安装完毕了&#xff1…

【多线程-从零开始-伍】volatile关键字和内存可见性问题

volatile 关键字 import java.util.Scanner; public class Demo2 { private static int n 0; public static void main(String[] args) { Thread t1 new Thread(() -> { while(n 0){ //啥都不写 } System.out.println("t1 线程结束循环"); }, "…

基于STM32的智能灌溉系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 初始化代码传感器读取和控制代码应用场景 农业灌溉花园自动灌溉常见问题及解决方案 常见问题解决方案结论 1. 引言 智能灌溉系统通过实时监测土壤湿度和环境温度&#xff0c;自动控制灌溉设…

【画流程图工具】

画流程图工具 draw.io draw.io&#xff08;现称为 diagrams.net&#xff09;是一款在线图表绘制工具&#xff0c;可以用于创建各种类型的图表&#xff0c;如流程图、网络图、组织结构图、UML图、思维导图等。以下是关于它的一些优点、应用场景及使用方法&#xff1a; 优点&a…

Linux(初学)

一.Linux历史 1.计算机发展历史 1945.2.14 埃尼阿克(第一台计算机)(军事用途) 摩尔定律(计算机小型化,高性能化) 摩尔定律是英特尔创始人之一戈登摩尔的经验之谈&#xff0c;其核心内容为&#xff1a;集成电路上可以容纳的晶体管数目在大约每经过18个月到24个月便会增加…

理解Android framework之AOSP:从内核到应用层

一、AOSP Android framework确保设备的各个部件和程序顺利协同工作。对于想要全面了解 Android 设备内部工作原理、开发高质量应用、优化设备性能以及充分利用 Android 生态系统潜力的人来说&#xff0c;了解 Android 框架也是必不可少的。它是连接用户、开发者和 Android 平台…

高效录屏指南:四大电脑录屏必备工具推荐!

在数字化时代&#xff0c;无论是工作汇报、在线教育还是游戏直播&#xff0c;电脑录屏已经成为了一项不可或缺的技能。今天&#xff0c;我们就来探索一下市面上几款备受好评的录屏工具&#xff1a;福昕录屏大师、转转大师录屏、爱拍录屏、嗨格式录屏大师&#xff0c;看看它们各…

基于RFID技术的智能压缩机装配线优化方案

基于RFID技术的智能压缩机装配线优化方案 传统压缩机装配线往往存在诸多痛点&#xff0c;如生产线单一、无法满足多元化和个性化的市场需求&#xff1b;生产数据滞后&#xff0c;导致产品统计的及时性和准确性无法得到保证&#xff1b;质量问题追溯困难&#xff0c;无法快速准…

c/c++ 为数组整体赋初值

目录 声明 一.整体赋值为0、“”或‘ ’ 二.整体赋值为其他 1.利用for循环赋值 2.逐个赋值 声明 为让c/c的朋友都看懂&#xff0c;本文将采取c语言为大家讲解 一.整体赋值为0、“”或‘ ’ 为什么把0、“”或‘ ’这三种情况单独调出来呢&#xff0c;因为如果将数组定义…

日股暴涨暴跌,港股恐将遭受波及!

近日海外市场波动较大&#xff0c;比如美国、日本等市场的走势可谓是“上蹿下跳”。港股市场也因此受到影响。众所周知&#xff0c;影响股票市场走势的重要因素之一是资金面&#xff0c;这一表现影响大盘及个股的走势。在港股市场&#xff0c;卖空数据作为关键指标备受关注。 …

铲屎官的好帮手,去猫咪浮毛神器——宠物空气净化器分享

养猫的家庭普遍面临一个共同的挑战&#xff1a;即便是刚经过一番精心打扫的居住环境&#xff0c;不出两日&#xff0c;家具表面、地板乃至家中各个缝隙便悄无声息地被一层细腻柔软的猫毛轻轻覆盖。这一现象&#xff0c;很大程度上归咎于猫咪的日常活跃与季节性的换毛过程。不仅…