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分别是什么?相关推荐

  1. nullptr和NULL

    nullptr是c++11中的关键字,表示空指针 要区分nullptr和NULL,首先要明白NULL的含义: NULL是一个宏定义,在c和c++中的定义不同,c中NULL为(void*)0,而c++中 ...

  2. 在c++11中讨论nullptr和NULL

    C++ 11 nullptr关键字 熟悉C++的童鞋都知道,为了避免"野指针"(即指针在首次使用之前没有进行初始化)的出现,我们声明一个指针后最好马上对其进行初始化操作.如果暂时不 ...

  3. c语言null和nullptr,nullptr和NULL

    nullptr是c++11中的关键字,表示空指针 要区分nullptr和NULL,首先要明白NULL的含义: NULL是一个宏定义,在c和c++中的定义不同,c中NULL为(void*)0,而c++中 ...

  4. nullptr与NULL

    空指针不指向任何对象,在C++11之后有如下几种生成空指针的方式 int *p1 = nullptr; int *p2 = 0; int *p3 = NULL; // 需要首先#include < ...

  5. nullptr VS NULL

    nullptr VS NULL NULL NULL is 0 (zero) i.e. integer constant zero with C-style typecast to void*, NUL ...

  6. nullptr与NULL的区别

    前言 在C语言中,我们常常用NULL作为指针变量的初始值,而在C++中,却不建议你这么做. NULL是什么 在<NULL,0,'\0',"0","\0"的 ...

  7. INVALID_HANDLE_VALUE 、 NULL、nullptr 和 nullptr_t 的联系

    --------------------------------------------- -- 时间:2018-12-26 -- 创建人:Ruo_Xiao -- 邮箱:xclsoftware@163 ...

  8. C++中NULL和nullptr的区别

    在编写C程序的时候只看到过NULL,而在C++的编程中,我们可以看到NULL和nullptr两种关键字,其实nullptr是C++11版本中新加入的,它的出现是为了解决NULL表示空指针在C++中具有 ...

  9. C语言nullptr错误,c/c++中的NULL,nullptr,0

    NULL,nullptr与0 0 NULL C语言中 C++中 隐式类型转换 nullptr 预处理中的条件编译语句 0 在我们的程序中,单纯一个0,在不同的类型中有着不同的意思 0,是一个空字符常量 ...

最新文章

  1. Oracle 11g dataguard主库坏块修复
  2. [转]一个典型的软件项目的WBS评析
  3. 排序---初级排序算法(选择排序、插入排序和希尔排序)
  4. MySQL性能调优 读写分离
  5. linux 之进程间通信-------------InterProcess Communication
  6. string java getbytes_从 String.getBytes 理解 Java 编码和解码
  7. HDOJ 2037 今年暑假不AC 【贪心】
  8. 全面升级 | 阿里云中间件推出3款新品和3项产品新特性,加速企业中台落地
  9. 链接时出现LNK2001错误的解决方法
  10. CCF201503-1 图像旋转(100分)【数学计算】
  11. java swing html_Swing中如何使用HTML按钮
  12. mysql中设置create_time和update_time默认值并实时更新
  13. 51c语言单片机io口控制实验报告,单片机实验报告二 单片机IO口实验
  14. Web前端基础学习——HTML5基础
  15. html5 粽子飘落,飘落的丁香花阅读*
  16. tp5——实践前台模板引入
  17. 4173: 数学 欧拉函数 思路题
  18. 根据qq宠物等级计算级别
  19. TabLayout+ViewPager实现tab切换
  20. MySQL 一键安装脚本

热门文章

  1. Openjudge 1.1编程基础之输入输出
  2. 猿创征文|JAVA 实现《俄罗斯方块升级版》游戏
  3. ubuntu9.10中安装scim中文输入法
  4. 中国安全市场进入战国时代(转)
  5. 无法安装服务“VMware Authorization Service” ,请确保您有足够的权限安装系统,如何解决?
  6. 什么软件测试4g网络速度,4G网速有多快?4G网速亲身测试体验
  7. 设置TCP connect超时时间的2种方法
  8. B08.python智能盯盘 + 声音报警 - 有意思的小东西【黑科技】
  9. komodo ide php,Komodo IDE
  10. komodo edit 支持java么_Komodo Edit