NULL,0, nullptr之间的联系与区别
程序员文章站
2022-07-13 23:34:20
...
C
定义: 在C语言中,NULL通常被定义为如下:
#define NULL ((void *)0)
总结: 即NULL为一个指向地址为0的指针,0只是一个单纯的数字0,而c中并没有nullptr
C++
定义: 在C++中,NULL通常被定义为如下:
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
例:
func(0);
func(NULL);
func( (int*)0 );
func(nullptr);
总结:
- 因为C++中不能将void *类型的指针隐式转换成其他指针类型,而又为了解决空指针的问题,所以C++中引入0来表示空指针
- nullptr为了解决函数重载的空指针传参问题:void func(int i); void func(int *p);
- 在c++中NULL和0是相等的
- nullptr是一个保存地址为0的指针
上一篇: 自定义WPF关闭窗口事件触发的函数