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<<"1";};
void fun(char *p){cout<<"2";};
int main()
{fun(NULL); //输出1,c++中NULL为整数0
fun(nullptr);//输出2,nullptr 为空指针常量。是指针类型
}
nullptr和NULL分别是什么?相关推荐
- nullptr和NULL
nullptr是c++11中的关键字,表示空指针 要区分nullptr和NULL,首先要明白NULL的含义: NULL是一个宏定义,在c和c++中的定义不同,c中NULL为(void*)0,而c++中 ...
- 在c++11中讨论nullptr和NULL
C++ 11 nullptr关键字 熟悉C++的童鞋都知道,为了避免"野指针"(即指针在首次使用之前没有进行初始化)的出现,我们声明一个指针后最好马上对其进行初始化操作.如果暂时不 ...
- c语言null和nullptr,nullptr和NULL
nullptr是c++11中的关键字,表示空指针 要区分nullptr和NULL,首先要明白NULL的含义: NULL是一个宏定义,在c和c++中的定义不同,c中NULL为(void*)0,而c++中 ...
- nullptr与NULL
空指针不指向任何对象,在C++11之后有如下几种生成空指针的方式 int *p1 = nullptr; int *p2 = 0; int *p3 = NULL; // 需要首先#include < ...
- nullptr VS NULL
nullptr VS NULL NULL NULL is 0 (zero) i.e. integer constant zero with C-style typecast to void*, NUL ...
- nullptr与NULL的区别
前言 在C语言中,我们常常用NULL作为指针变量的初始值,而在C++中,却不建议你这么做. NULL是什么 在<NULL,0,'\0',"0","\0"的 ...
- INVALID_HANDLE_VALUE 、 NULL、nullptr 和 nullptr_t 的联系
--------------------------------------------- -- 时间:2018-12-26 -- 创建人:Ruo_Xiao -- 邮箱:xclsoftware@163 ...
- C++中NULL和nullptr的区别
在编写C程序的时候只看到过NULL,而在C++的编程中,我们可以看到NULL和nullptr两种关键字,其实nullptr是C++11版本中新加入的,它的出现是为了解决NULL表示空指针在C++中具有 ...
- C语言nullptr错误,c/c++中的NULL,nullptr,0
NULL,nullptr与0 0 NULL C语言中 C++中 隐式类型转换 nullptr 预处理中的条件编译语句 0 在我们的程序中,单纯一个0,在不同的类型中有着不同的意思 0,是一个空字符常量 ...
最新文章
- Oracle 11g dataguard主库坏块修复
- [转]一个典型的软件项目的WBS评析
- 排序---初级排序算法(选择排序、插入排序和希尔排序)
- MySQL性能调优 读写分离
- linux 之进程间通信-------------InterProcess Communication
- string java getbytes_从 String.getBytes 理解 Java 编码和解码
- HDOJ 2037 今年暑假不AC 【贪心】
- 全面升级 | 阿里云中间件推出3款新品和3项产品新特性,加速企业中台落地
- 链接时出现LNK2001错误的解决方法
- CCF201503-1 图像旋转(100分)【数学计算】
- java swing html_Swing中如何使用HTML按钮
- mysql中设置create_time和update_time默认值并实时更新
- 51c语言单片机io口控制实验报告,单片机实验报告二 单片机IO口实验
- Web前端基础学习——HTML5基础
- html5 粽子飘落,飘落的丁香花阅读*
- tp5——实践前台模板引入
- 4173: 数学 欧拉函数 思路题
- 根据qq宠物等级计算级别
- TabLayout+ViewPager实现tab切换
- MySQL 一键安装脚本
热门文章
- Openjudge 1.1编程基础之输入输出
- 猿创征文|JAVA 实现《俄罗斯方块升级版》游戏
- ubuntu9.10中安装scim中文输入法
- 中国安全市场进入战国时代(转)
- 无法安装服务“VMware Authorization Service” ,请确保您有足够的权限安装系统,如何解决?
- 什么软件测试4g网络速度,4G网速有多快?4G网速亲身测试体验
- 设置TCP connect超时时间的2种方法
- B08.python智能盯盘 + 声音报警 - 有意思的小东西【黑科技】
- komodo ide php,Komodo IDE
- komodo edit 支持java么_Komodo Edit