欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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);

总结:

  1. 因为C++中不能将void *类型的指针隐式转换成其他指针类型,而又为了解决空指针的问题,所以C++中引入0来表示空指针
  2. nullptr为了解决函数重载的空指针传参问题:void func(int i); void func(int *p);
  3. 在c++中NULL和0是相等的
  4. nullptr是一个保存地址为0的指针