C++11中0与 NULL与nullptr之间的关系
1.从本质上1) 0是int型的字面值常量2) NULL 是预处理变量,定义在 cstdlib 中,其值是03) nullptr 是 nullptr_t 类型的字面值。
2.cstdlib 中 NULL 的定义#ifdef __cplusplus#define NULL 0#else#define NULL ((void *)0)#endif
之所以这样定义的原因,是因为在C语言中,允许 void* 类型隐式转换为任意指针类型,而C++中不允许这
样的强制类型转换,但是可以为任意类型的指针赋0值,因此,在C++中将NULL 定义为0.
3.0 比 NULL 好
在网上的资料中,均是一致认为 0 比 NULL 好,因为很多可能会出错的时候,使用 0 更直观,如:
void test(int i){ cout << "in int" << endl; }
void test(int * i){ cout << "in int *" << endl; }
int main()
{test(0); //输出 in inttest(NULL); //输出 in int
}
此时,两个函数调用均会调用参数为 int 的 test,使用 0 调动的版本看起来更加直观,因为 0 本身是一
个 int 类型的字面值常量,而会潜意识的认为 NULL 应该是一个指针类型,不利于查错
4.nullptr 比 0 更好
nullptr 是 nullptr_t 类型的常量,而该类型定义了转到任意指针类型的转换操作符,同时不允许该类型
的对象转换到非指针类型,在上面的调用例子中,使用 nullptr,将会调用第二个函数,
C++11中0与 NULL与nullptr之间的关系相关推荐
- C# 11 中的参数 null 检查
C# 11 中的参数 null 检查 Intro C# 11 将引入一个新的操作符 !! 来简化我们代码中的对于参数的 null 检查,昨天发布的 .NET 7 Preview 1 已经支持了这一语法 ...
- storm中worker、executor、task之间的关系
这里做一些补充: worker是一个进程,由supervisor启动,并只负责处理一个topology,所以不会同时处理多个topology. executor是一个线程,由worker启动,是运行t ...
- GPS 数据中的精度因子(DOP)与协方差之间的关系 (参考链接)
GPS 数据中的精度因子(DOP)与协方差之间的关系 参考链接: [1] evenator. libnmea_navsat_driver/driver.py [EB/OL]. https://gith ...
- php中0与NULL,False,“0”,\0的区别
先说明一下结论:0与NULL,False,"0","\0"的值相同,都以0存储,但是类型不同, 再看一段实验代码: <?php $test=0; if($ ...
- unity中awak,start,update之间的关系(转)
正式开始学习Unity了.当然,第一个遇到的问题就是Awake和Start的问题,之前在网上查过一下这两者的区别,简单记忆了一下,认为自己知道了两者的区别.不过实际用起来,发现对于这两者到底是什么区别 ...
- 【FFMPEG源码分析】ffmpeg中context与AVClass,AVOption之间的关系
通过前面三篇文章的分析大致了解了ffmpeg中demuxer/decoder模块的内部大致结构和数据处理流程.在阅读源码的过程中经常会看到XXXContext,AVClass xxx_class, A ...
- unity中单位是米还是厘米_2019-08-22Unity中的单位长度与像素之间的关系
一:什么是像素? 像素是由很多个小方格组成,每一个小方格上都存储了位置信息和色彩信息.像素是图像的最小单位 分享一个知识点:图像分为两类,位图和矢量图 位图(点阵图):由多个像素组成,当放大时被分为多 ...
- unity中awak,start,update之间的关系
转载地址 正式开始学习Unity了.当然,第一个遇到的问题就是Awake和Start的问题,之前在网上查过一下这两者的区别,简单记忆了一下,认为自己知道了两者的区别.不过实际用起来,发现对于这两者到底 ...
- Android中的APK,TASK,PROCESS,USERID之间的关系
开发Android已经有一段时间了,今天接触到底层的东西,所以对于进程,用户的id以及Android中的Task,Apk之间的关系,要做一个研究,下面就是研究结果: apk一般占一个dalvik,一个 ...
最新文章
- c语言可以将负数强制转换成正数吗_C语言笔记(一、概述)
- 基于JAVA+SSM+MYSQL的菜谱学习平台
- I9 9900K线程_收藏党抓紧了!英特尔停产i9-9900K特色包装,只因运输太浪费
- 语义分割——Spatial Pyramid Pooling (SPP)的作用
- scala数组与java数组对比
- csv文件-读取方式、字典
- Linux的相关资源帖
- 创建dqn的深度神经网络_深度Q网络(DQN)-II
- python实现将android手机通讯录vcf文件转化为csv
- ​倒卖二手书,一个被忽略的项目,​做的​好月赚1w+
- 教育培训招生小程序源码
- 【Simscape】用Simscape实现三维物理仿真(三)——创建一个滑块单摆系统
- 用python写飞机大战过几天不能运行了_最近写的一个飞机大战的程序,写到一半有一个已经写好的函数但不能运用,强行运行程序秒退,百思不得其姐...
- 聚播群控微信二次开发sdk完整API
- mysql 取top 10_我的mysql如何分组取top10?
- html与jsp、jsp与jsp之间的交互
- DDLMS-DFE算法
- 正方教务系统php登陆,正方教务管理系统最新版无条件注入GetShell | wooyun-2015-0122523| WooYun.org...
- 【Python自学笔记】报错No module Named Wandb
- Xilinx Aurora 8B/10B IP核详解和仿真
热门文章
- windows下检測文件改变
- [转载]SVN使用教程
- linux 内核源码学习
- 春Phone计划 51cto沙龙郑州站活动
- JHipster简介
- BMP文件格式详解(BMP file format) (转)
- 使用FastReport 3.0及以上版本创建动态报表的几个技巧(转)
- TensorFlow学习笔记--第三节张量(tensor)及其定义方法
- rdd数据存内存 数据量_Spark 性能优化(二)——数据倾斜优化
- yolov3模型识别不出训练图片_技术实践丨基于MindSpore框架Yolov3-darknet模型的篮球动作检测体验...