C++学习笔记总结练习:nullptr、NULL、0

三者的区别

参考文献

1 说明

C中的NULL

  • C中使用 ((void*)0)表示空指针。NULL会被替换为 ((void*)0)

    int *i = NULL;
    foo_t *f = NULL;

    #define NULL ((void*)0)

C++中的NULL

  • C++中void* 不能进行强制类型转换成其他类型的NULL,所以int* 类型的空指针,不能使用void* 代替,则原来的宏定义无法使用。

  • C++中使用0,来表示空指针。

    #ifdef __cplusplus ---简称:cpp c++ 文件
    #define NULL 0
    #else
    #define NULL ((void *)0)
    #endif

C++中的0

  • 重载过程中会出现问题,因为空指针会被识别为整形的0,从而导致重载出现错误。
  • 0指针的二义性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P08a3sF5-1692607890743)(image/2021-03-05-17-00-11.png)

C++中的nullptr

  • nullptr 关键字,被自动转换为各种pointer类型。但他不会不转换为任何整型类型。防止null作为参数的时候出现函数重载的错误。

主要区别

  • nullptr关键字:nullptr是一种特殊类型的字面值,它可以被转换成任意其它的指针类型;而NULL一般被宏定义为0,在遇到重载时可能会出现问题。
相关推荐
十五年专注C++开发17 小时前
FlatBuffers: 一个高效的零拷贝二进制序列化库
c++·序列化·反序列化·flatbuffers
小弥儿17 小时前
38K星的开源项目 t3code:给 Claude Code 和 Codex 装一个手机遥控器
学习·智能手机·开源·github
xys_67817 小时前
深挖C++:C++入门基础
开发语言·c++
xxwl58518 小时前
Nginx 基础学习笔记
笔记·学习·nginx
Star(up up up)18 小时前
Docker系列---Dockerfile镜像文件
人工智能·经验分享·学习·程序人生·docker·容器·github
January120718 小时前
【AI方法笔记】2026-11-02:模型流式吐 JSON 时,前端会遇到四种崩法
前端·人工智能·笔记·json
高冷小鱼殿下18 小时前
C 语言指针与输入输出
c++
路溪非溪18 小时前
C++标准库之智能指针
linux·开发语言·c++
snysy18 小时前
# 磁盘IO性能fio测试实操笔记
笔记·磁盘io·fio
外收内放18 小时前
ENSP学习记录(4)
服务器·学习·智能路由器