C语言nullptr错误,C ++中的nullptr到底是什么

article/2025/8/28 4:52:00

对于有经验的C ++和那些了解现代C ++编程语言的人来说,C ++中的nullptr到底是什么,这将是非常简单的问题。但是nullptr不仅是C

++中的编程语言,而且为了解释这一点,我们先了解一下NULL的问题,然后我们将深入研究nullptr的简单实现以及nullptr的一些用例。为什么我们需要nullptr?区分整数0(零)(即NULL)和类型指针的实际null。

5acc3ca0c6a763f52234eaef97dd7b7d.png

nullptr与NULL

NULL为0(零),即将C样式类型转换为void

*的整数常数为零,而nullptr是nullptr_t类型的prvalue,该值是整数常量,其值为零。

对于那些相信NULL相同的人,即C和C ++中的(void *)0。想澄清的是,不是:

NULL-cppreference.com (C)

NULL-cppreference.com (C ++)

C ++要求将宏NULL定义为值为0的整数常量表达式。因此与C语言不同,在C ++标准库中不能将NULL定义为(void *)0。

NULL问题

1.隐式转换

char *str = NULL; // Implicit conversion from void * to char *

int i = NULL; // OK, but `i` is not pointer type

2.函数调用歧义

void func(int) {}

void func(int*){}

void func(bool){}

func(NULL); // Which one to call?

编译会产生以下错误:

error: call to 'func' is ambiguous

func(NULL);

^~~~

note: candidate functio


http://chatgpt.dhexx.cn/article/9CXdLkeh.shtml

相关文章

C++中NULL和nullptr的区别

在编写C程序的时候只看到过NULL,而在C的编程中,我们可以看到NULL和nullptr两种关键字,其实nullptr是C11版本中新加入的,它的出现是为了解决NULL表示空指针在C中具有二义性的问题,为了弄明白这个问题,我查找…

C++11中的nullptr

一、什么是nullptr? nullptr是c11的空指针,可以理解为 NULL的升级版。 二、解决什么问题? 首先,在C语言中,NULL是被定义成这样的#define NULL ((void *)0)。 而C中,NULL是被定义成这样#define NULL 0。 …

C++基础:指针空值(nullptr)

初始化指针是将其指向一个“空”位置,比如0。由于大多数计算机系统不允许用户程序写地址为0的内存空间,倘若程序无意中对该指针所指地址赋值,通常在运行时就会导致程序退出。虽然程序退出并非什么好事,但这样一来错误也容易被程序…

【Kafka】消息的同步发送和异步发送

文章目录 概述1. sync vs async1.1 java代码同步和异步 2. 可靠性机制(ack属性配置)2.1 oneway 3. 一般配置4. 同步异步和ack的联系和区别参考 概述 kafka有同步(sync)、异步(async)以及oneway这三种发送方式,某些概念…

http请求与响应,同步异步请求以及异步请求axios的配置

文章目录 httphttp简介,协议http请求http响应接收请求行请求头数据 同步异步请求异步请求axios的配置配置文件 http http简介,协议 http是超文本传输协议 (HyperText Transfer Protocol)服务器传输超文本 到本地浏览器的传送协议…

ajax同步和异步的区别

一、同步访问和异步访问的区别,先从概念上区别: 1、同步的概念应该是来自于操作系统中关于同步的概念。 2、不同进程为协同完成某项工作而在先后次序上调整(通过阻塞,唤醒等方式)。同步强调的是顺序性,谁先谁后;异步则不存在这种顺…

C++ LinuxWebServer项目(5)同步异步日志系统

一、前言 对于任何一个服务器而言,日志系统的设计是非常重要的,尝试设计一个简易的同步异步日志系统来完成系统日志的记录。 二、基础知识 日志,由服务器自动创建,并记录运行状态,错误信息,访问数据的文件。 同步日志,日志写入函数与工作线程串行执行,由于涉及到I…

一文搞懂同步异步阻塞非阻塞

相信很多人在面试的过程中,都被问到过同步和异步的区别、阻塞和非阻塞的区别,以及这两对关系又有什么联系?本文尽可能从专业的角度,用易懂的语言,帮助大家理解 01 前置知识 用户空间和内核空间 操作系统可以支持多个…

同步异步半同步分离式通信

同步通信:采用统一的时钟信号 读数据 T1上升沿主设备给出从设备地址 T2上升沿给出读命令 T3上升沿读数据 T4上升沿撤销 写数据 T1上升沿主设备给出从设备地址 T1下降沿给出数据 T2上升沿给写命令 T4上升沿撤销 异步通信分为三类: 不互锁&#…

一篇文章理解 同步异步、阻塞非阻塞

前述 同步异步,阻塞非阻塞是一些非常常见的概念,但是对于开发者来说往往是用到了很难说清楚。 笔者专门整理了下这方面的概念,作此文以记之。 这部分内容可能存在一些争议,如有不同意见欢迎评论交流。 概念 个人理解同步异步与阻…

ES6同步异步处理

同步和异步 1.同步就是代码从上而下依次执行,除了函数或则回调函数 2.异步也有先后之分但是不明显,等js代码先执行同步后再去执行异步的代码. 如何处理同步异步的问题(ES6的Promise) 接上面,看下面的代码 var arr[…

前端学习-同步异步问题

在做实作课作品时,出现过对象中变量访问不到的情况,查阅相关资料发现时同步异步的问题,这篇文章帮助我理清思路,希望也能帮助你们更好地理解同步异步。 一、什么是同步/异步任务? 同步任务:指的是在主线程…

dubbo同步异步调用

通常我们通过dubbo调用服务接口,等待提供方处理完响应结果,这是同步调用;也是默认的调用方式。通过查看原吗DubboInvoker可以看到: 整体来说有三种方式: 1、是否关注结果,returntrue关注,默认也…

理解:什么是同步和异步?什么是阻塞和非阻塞?

一、同步和异步 同步与异步是指访问数据的机制,同步一般指主动请求并等待IO操作完成的方式。 异步则指主动请求数据后便可以继续处理其它任务,随后等待IO操作完毕的通知。 同步和异步最大的区别就在于:同步需要等待,异步不需要等…

CPUGPU加速计算

1、CPU(Centrol Processing Unit) CPU上的大部分面积做了cache 和控制逻辑,天然适合做复杂串行程序; 2、GPU(Graphic Processing Unit): GPU有更多的晶体管用于数据处理,特别适用于解决并行计算的问题。可以使程序执行速度加快。为处理图形…

tensorflow使用GPU加速

测试faster-rcnn时,cpu计算速度较慢,调整代码改为gpu加速运算 将 with tf.Session() as sess: 替换为 1 gpu_options tf.GPUOptions(per_process_gpu_memory_fraction0.9) 2 with tf.Session(configtf.ConfigProto(gpu_optionsgpu_options,log_device_…

GPU 及其加速库简介

文章目录 一、GPU 与 CPU 简介1、GPU 与 CPU 的区别2、GPU 分类3、GPU(NVIDIA A100 ) 介绍 二、CUDA 简介1、多版本 CUDA 切换2、为各种 NVIDIA 架构匹配 CUDA arch 和 gencode 三、OpenCL 简介1、OpenCL 平台模型2、OpenCL 执行模型 四、参考资料 一、G…

Pytorch使用GPU加速的步骤

CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台。 CUDA是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。近些年来,显卡的计算能力越来越强大,如果只…

Python程序如何用GPU加速:Tesla、CUDA、Numba

概念解析 首先要明白,普通的Python代码是无法使用GPU加速的,只能在GPU上跑针对GPU设计的程序。 硬件加速必须要用硬件语言实现。 查询PythonGPU关键字,除了TensorFlow,另外出镜率比较高的几个概念是:Numba、CUDA、PyCU…

什么是 GPU 加速的计算?

什么是 GPU 加速的计算? GPU 加速计算是指同时采用图形处理单元 (GPU) 和 CPU,以加快科学、分析、设计、消费者和企业应用程序的速度。GPU 加速器于 2007 年由 NVIDIA 率先推出,现已在世界各地为政府实验室、大学、公司以及中小型企业的高能效数据中心提…