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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。