nullptr是c++11中的关键字,表示空指针

要区分nullptr和NULL,首先要明白NULL的含义:

NULL是一个宏定义,在c和c++中的定义不同,c中NULL为(void*)0,而c++中NULL为整数0

//C语言中NULL定义

#define NULL (void*)0 //c语言中NULL为void类型的指针,但允许将NULL定义为0

//c++中NULL的定义

#ifndef NULL

#ifdef _cpluscplus //用于判定是c++类型还是c类型,详情看上一篇blog

#define NULL 0 //c++中将NULL定义为整数0

#else

#define NULL ((void*)0) //c语言中NULL为void类型的指针

#endif

#endif

所以在c++中int *p=NULL; 实际表示将指针P的值赋为0,而c++中当一个指针的值为0时,认为指针为空指针

然后理解nullptr:

nullptr是一个字面值常量,类型为std::nullptr_t,空指针常数可以转换为任意类型的指针类型。

在c++中(void *)不能转化为任意类型的指针,即 int *p=(void*)是错误的,但int *p=nullptr是正确的,原因

对于函数重载:若c++中 (void *)支持任意类型转换,函数重载时将出现问题下列代码中fun(NULL)将不能判断调用哪个函数

void fun(int i){cout<

void fun(char *p){cout<

int main()

{

fun(NULL); //输出1,c++中NULL为整数0

fun(nullptr);//输出2,nullptr 为空指针常量。是指针类型

}

nullptr和NULL 区别

注:本文内容摘自网络,准确性有待验证,现阶段仅供学习参考.尊重作品作者成果,原文链接 :http://www.2cto.com/kf/201302/190008.html 1.为什要有nullptr ...

nullptr与NULL

NULL NULL can be defined as any null pointer constant. Thus existing code can retain definitions of  ...

优先选择nullptr而不是0和NULL

我们知道:0是一个int,而不是一个指针.如果C++在一个只有指针才能够使用的上下文中发现它只有一个0,那么它会勉强将0解释成空指针,但那时一种倒退行为.C++的主要方针是0就是一个int,而不是指针 ...

item 8&colon; 比起0和NULL更偏爱nullptr

本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 先让我们看一些概念:字面上的0是一个int,不是一个指针.如果C+ ...

Pointer&&num;39&semi;s NULL And 0

问题起源 在使用Qt框架的时候, 经常发现一些构造函数 *parent = 0 这样的代码. 时间长了, 就觉的疑惑了. 一个指针不是等于NULL吗? 这样写, 行得通吗? 自己测试一下就可以了. 测 ...

C&plus;&plus;11 之 nullptr

C++11 中,nullptr 是空指针,可用来给 (指向任意对象类型的) 指针赋值 广义整型 (integral types) = char, short, int, long, long long ...

【C&plus;&plus;11新特性】 nullptr关键字

原文链接:http://blog.csdn.net/xiejingfa/article/details/50478512 熟悉C++的童鞋都知道,为了避免“野指针”(即指针在首次使用之前没有进行初始化 ...

C&plus;&plus; 11 nullptr关键字

熟悉C++的童鞋都知道,为了避免“野指针”(即指针在首次使用之前没有进行初始化)的出现,我们声明一个指针后最好马上对其进行初始化操作.如果暂时不明确该指针指向哪个变量,则需要赋予NULL值.除了NUL ...

范围for、new内存动态分配、nullptr

一.范围for语句:用于遍历一个序列 ,,,,}; for(auto &x : v) // 省了拷贝的动作,提高了系统效率 { cout << x << endl; } ...

随机推荐

使用ownCloud在Linux安装你的个人云服务

ownCloud是一个免费开源的软件,用于为分享文件,日历,联系人,书签和个人音频/视频.非常容易安装和管理. 前提 在这篇教程里我使用CentOS 6.5 minimal server来安装ownC ...

C&plus;&plus;对象模型(一):The Semantics of Constructors The Default Constructor (默认构造函数什么时候会被创建出来)

本文是 Inside The C++ Object Model, Chapter 2的部分读书笔记. C++ Annotated Reference Manual中明确告诉我们: default co ...

php中的echo 与print 、var&lowbar;dump 的区别

·  echo - 可以输出一个或多个字符串 ·  print - 只允许输出一个字符串,返回值总为 1 提示:echo 输出的速度比 print 快, echo 没有返回值,print有返回值1. ...

【转】Linux下cp&colon; omitting directory &grave;XXX&&num;39&semi;问题解决

在linux系统中复制文件夹时提示如下: Shell代码 [root@idtp4 site-packages]# /site-packages/ cp: omitting directory ‘yag ...

Phone List HDU1671

字典树的包含与不包含关系 #include using namespace std; ][]; ]; ; bool insert1( char *word ) ...

Java Spring学习笔记----Bean的依赖注入(设值注入方式)1

Spring常用的两种依赖注入方式:一种是设值注入方式,利用Bean的setter方法设置Bean的属性值:另一种是构造注入,通过给Bean的构造方法传递参数来实现Bean的属性赋值: 1.设值注入方 ...

【读书笔记】iOS-关闭键盘的2种方法

一种是通过使用键盘上的return键关闭键盘,一种是通过触摸背景关闭键盘. 参考资料:

js回车、ESC、F2按钮事件

WPF 中的OpenFileDialog和 OpenFolderDialog

OpenFolderDialog: using (var dialog = new System.Windows.Forms.FolderBrowserDialog() { SelectedPath ...

c语言null和nullptr,nullptr和NULL相关推荐

  1. th:text为null报错_为什么建议你用nullptr而不是NULL?

    来源:公众号[编程珠玑] 作者:守望先生 网站:https://www.yanbinghu.com 前言 在C语言中,我们常常用NULL作为指针变量的初始值,而在C++中,却不建议你这么做. NULL ...

  2. c语言Null详解,c语言NULL和0区别及NULL详解(示例代码)

    先看下面一段代码输出什么: #include int main() { int *p=NULL; printf("%s",p); } 输出 ,单步调试可以看出执行int *p=NU ...

  3. c语言NULL和0区别及NULL详解

    转载于一位牛人:http://www.cnblogs.com/youxin/archive/2012/03/27/2420023.html ~(翻译是我自己理解翻译的,嘻嘻,难免会有错误还请多多指点) ...

  4. c+语言+null,C/C++语言中NULL、'\0’和0的区别

    NULL.'\0'和0的值是一样的,都是0,不过它们的表现形式不一样: 1. NULL: 即空指针,不过在C和C++中并不一样.在VS 2013的库文件string.h中可以看到如果定义. 1 /* ...

  5. null导入失败_当null检查非常失败时

    null导入失败 免责声明 在继续之前,我必须指出,当我们对Java进行编程时,本文中描述的技术没有实际目的. 就像填字游戏或拼图. 它主要训练您的大脑进行逻辑思维,可能发展您的Java语言知识甚至您 ...

  6. 为什么null为对象,并且null和undefined有什么区别?

    为什么在JavaScript中将null视为object ? 正在检查 if ( object == null )Do something 与...相同 if ( !object )Do someth ...

  7. mysql null 排前面_Mysql实现null值排在最前/最后的方法示例

    前言 我们已经知道 MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作. 为了处理这种情况,MyS ...

  8. mysql not null 性能_如何使用NULL提高MySQL查询的性能?

    下表中有几百万条记录: CREATE TABLE `customers` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `store_id` int ...

  9. Shell中的/dev/null 21 与 21 /dev/null 与/dev/null 的区别

    转自:http://blog.csdn.net/reyleon/article/details/11595985 默认情况下,总是有三个文件处于打开状态,标准输入(键盘输入).标准输出(输出到屏幕). ...

最新文章

  1. 关于IBM Lotus的JAVA代理进入jar包的说明
  2. 字节输入流_InputStream类FileInputStream类介绍
  3. 大妈也能看懂的大数据分布式计算
  4. Windows路由表
  5. webgl 着色器_如何在WebAssembly中使用WebGL着色器
  6. ECCV18 Oral | CornerNet目标检测开启预测“边界框”到预测“点对”的新思路
  7. background-position 用法介绍
  8. java rtti_java对RTTI的所有需要
  9. MATLAB数据标准化处理,mapminmax、zscore、mapstd对比
  10. java随机一个数字和字母_java怎么实现随机4个带有数字和字母的验证码?
  11. github 提交消息的emoji表情符号规范
  12. 1月到12月 周一到周日 十二种颜色 用英语怎么说
  13. 如何通过软件编辑自己想要的点阵图片
  14. flv直播流播放视频,websocket响应造成内存泄漏 浏览器崩溃
  15. 2014美国大学计算机专业排名,2014年美国大学计算机专业研究生排名
  16. #2阴阳师首页模块模拟
  17. 123数字黑洞-第11届蓝桥杯Scratch选拔赛真题精选
  18. 如何阅读一本书 读书笔记
  19. 光纤工程的,光纤熔接,光纤测试
  20. FP6601Q工作设计指南(AC-DC / DC-DC)

热门文章

  1. 首都机场动力能源公司官方网站全新改版上线
  2. webwork的设计模式
  3. 7个网络安全保护的温馨提示
  4. 如何用手机HTML制作哆啦a梦,CSS3绘制哆啦A梦(带鼠标动画)
  5. 模具设计需要的条件有什么?
  6. php 截图插件下载,GoFullPage插件下载
  7. hostapd启动流程(一)
  8. 帅小伙的MFC VC++ 图片的旋转
  9. [教程]HTML5+Bootstrap4+Spring Boot+Mysql 图书管理系统 (附源码)
  10. Mac 安装 homebrew 详细教程