c语言null和nullptr,nullptr和NULL
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: 比起0和NULL更偏爱nullptr
本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 先让我们看一些概念:字面上的0是一个int,不是一个指针.如果C+ ...
Pointer&#39;s NULL And 0
问题起源 在使用Qt框架的时候, 经常发现一些构造函数 *parent = 0 这样的代码. 时间长了, 就觉的疑惑了. 一个指针不是等于NULL吗? 这样写, 行得通吗? 自己测试一下就可以了. 测 ...
C++11 之 nullptr
C++11 中,nullptr 是空指针,可用来给 (指向任意对象类型的) 指针赋值 广义整型 (integral types) = char, short, int, long, long long ...
【C++11新特性】 nullptr关键字
原文链接:http://blog.csdn.net/xiejingfa/article/details/50478512 熟悉C++的童鞋都知道,为了避免“野指针”(即指针在首次使用之前没有进行初始化 ...
C++ 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++对象模型(一):The Semantics of Constructors The Default Constructor (默认构造函数什么时候会被创建出来)
本文是 Inside The C++ Object Model, Chapter 2的部分读书笔记. C++ Annotated Reference Manual中明确告诉我们: default co ...
php中的echo 与print 、var_dump 的区别
· echo - 可以输出一个或多个字符串 · print - 只允许输出一个字符串,返回值总为 1 提示:echo 输出的速度比 print 快, echo 没有返回值,print有返回值1. ...
【转】Linux下cp: omitting directory `XXX&#39;问题解决
在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相关推荐
- th:text为null报错_为什么建议你用nullptr而不是NULL?
来源:公众号[编程珠玑] 作者:守望先生 网站:https://www.yanbinghu.com 前言 在C语言中,我们常常用NULL作为指针变量的初始值,而在C++中,却不建议你这么做. NULL ...
- c语言Null详解,c语言NULL和0区别及NULL详解(示例代码)
先看下面一段代码输出什么: #include int main() { int *p=NULL; printf("%s",p); } 输出 ,单步调试可以看出执行int *p=NU ...
- c语言NULL和0区别及NULL详解
转载于一位牛人:http://www.cnblogs.com/youxin/archive/2012/03/27/2420023.html ~(翻译是我自己理解翻译的,嘻嘻,难免会有错误还请多多指点) ...
- c+语言+null,C/C++语言中NULL、'\0’和0的区别
NULL.'\0'和0的值是一样的,都是0,不过它们的表现形式不一样: 1. NULL: 即空指针,不过在C和C++中并不一样.在VS 2013的库文件string.h中可以看到如果定义. 1 /* ...
- null导入失败_当null检查非常失败时
null导入失败 免责声明 在继续之前,我必须指出,当我们对Java进行编程时,本文中描述的技术没有实际目的. 就像填字游戏或拼图. 它主要训练您的大脑进行逻辑思维,可能发展您的Java语言知识甚至您 ...
- 为什么null为对象,并且null和undefined有什么区别?
为什么在JavaScript中将null视为object ? 正在检查 if ( object == null )Do something 与...相同 if ( !object )Do someth ...
- mysql null 排前面_Mysql实现null值排在最前/最后的方法示例
前言 我们已经知道 MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作. 为了处理这种情况,MyS ...
- mysql not null 性能_如何使用NULL提高MySQL查询的性能?
下表中有几百万条记录: CREATE TABLE `customers` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `store_id` int ...
- Shell中的/dev/null 21 与 21 /dev/null 与/dev/null 的区别
转自:http://blog.csdn.net/reyleon/article/details/11595985 默认情况下,总是有三个文件处于打开状态,标准输入(键盘输入).标准输出(输出到屏幕). ...
最新文章
- 关于IBM Lotus的JAVA代理进入jar包的说明
- 字节输入流_InputStream类FileInputStream类介绍
- 大妈也能看懂的大数据分布式计算
- Windows路由表
- webgl 着色器_如何在WebAssembly中使用WebGL着色器
- ECCV18 Oral | CornerNet目标检测开启预测“边界框”到预测“点对”的新思路
- background-position 用法介绍
- java rtti_java对RTTI的所有需要
- MATLAB数据标准化处理,mapminmax、zscore、mapstd对比
- java随机一个数字和字母_java怎么实现随机4个带有数字和字母的验证码?
- github 提交消息的emoji表情符号规范
- 1月到12月 周一到周日 十二种颜色 用英语怎么说
- 如何通过软件编辑自己想要的点阵图片
- flv直播流播放视频,websocket响应造成内存泄漏 浏览器崩溃
- 2014美国大学计算机专业排名,2014年美国大学计算机专业研究生排名
- #2阴阳师首页模块模拟
- 123数字黑洞-第11届蓝桥杯Scratch选拔赛真题精选
- 如何阅读一本书 读书笔记
- 光纤工程的,光纤熔接,光纤测试
- FP6601Q工作设计指南(AC-DC / DC-DC)