美文网首页
nullptr与NULL的区别

nullptr与NULL的区别

作者: 李伟13 | 来源:发表于2020-05-16 23:23 被阅读0次

为什么建议你用nullptr而不是NULL
https://zhuanlan.zhihu.com/p/79883965

在C语言中,NULL实际是一个void *指针
#define NULL ((void *)0)
#if defined(__cplusplus) 
# define NULL 0 /* C++中使用0作为NULL的值 */
#else 
# define NULL ((void *)0) /* C中使用((void *)0)作为NULL的值 */ 
#endif

那如果NULL和C中一样是((void *) 0)呢?

//null.cpp
#include<iostream>
int main(void)
{
    char p[] = "12345";
    int *a = (void*)p;      错误:C++中不能隐式转换成其他指针类型
    return 0;
}
你总不能每次都显式转换空指针来初始化吧

隐式转换

https://blog.csdn.net/j497205974/article/details/82690786

void func(int) {}
void func(int *) {}
func(NULL) 会因为NULL为0调用func(int)函数

nullptr并非整型类别,甚至也不是指针类型,但是能转换成任意指针类型。nullptr的实际类型是std:nullptr_t

相关文章

  • C++11新特性(2)

    1.空指针nullptr nullptr与NULL的区别:对于NULL,是一个空指针常量,如果将NULL扩展为常数...

  • nullptr与NULL的区别

    为什么建议你用nullptr而不是NULLhttps://zhuanlan.zhihu.com/p/7988396...

  • 2019-01-08

    c++11中nullptr(与NULL的区别)[https://blog.csdn.net/justdoithai...

  • NULL 和nullptr区别

    今天在写一个程序的时候,想设置默认参数。其实自己想的和这个似乎一点关系都没有。 不过不重要。重点是了解了一些东西。...

  • nullptr

    nullptr 空指针:从 0 到 NULL,再到 nullptr NULL 是一个宏定义: 引起该问题的原因是 ...

  • C++11/14新特性

    1.nullptr nullptr 出现的目的是为了替代 NULL,传统 C++ 会把 NULL、0 视为同一种东...

  • FFmpeg视频播放

    首先记录一下C++中的NULL、0、nullptr的区别 NULL在C++中就是0,这是因为在C++中void* ...

  • NULL,nullptr,0,'\0','0'区别

    NULL,nullptr,0,'\0','0',这几个看起来好像都不是一样的东西,但是实际上前面4个都是数字0,只...

  • C++学习笔记之NULL vs nullptr

    C++学习笔记之NULL vs nullptr

  • C++中NULL和nullptr的区别

    前言 C和C++的变量名是对大小写敏感的,因此NULL和null并不是一回事,前者是C/C++中的系统关键字,nu...

网友评论

      本文标题:nullptr与NULL的区别

      本文链接:https://www.haomeiwen.com/subject/ckbrohtx.html