C++中 NULL 与 nullptr

C和C++的变量名是对大小写敏感的,因此NULL和null并不是一回事,前者是C/C++中的系统关键字,null并不是。C++11以后又引入了nullptr,用以解决NULL在隐式转换和作为函数传入参数时的二义性问题。

在C++11以前,在C/C++语言中,我们常常用NULL作为指针变量的初始值。而在C++11之后,却不建议你这么做。
其实NULL根据命名全大写可以看出来,它是一个常量,既然是常量,就需要进行宏定义。C语言的标准头文件是这样定义的

 #define NULL ((void*)0)

而到了C++中,则变成了

#define NULL 0

查阅stddef.h,可以看到如下定义

#undef NULL
#if defined(__cplusplus)
#define NULL 0
#else
#define NULL ((void *)0)
#endif

从定义中可以看出,C++中,NULL其实就是0,但是也可以用作空指针,只是用作空指针可能是为了兼容C,迫于无奈。



作者:PengQ1
链接:https://www.jianshu.com/p/09e3b40929ad
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
posted @ 2020-10-30 15:23  zeroPatrick  阅读(233)  评论(0编辑  收藏  举报