NULL和nullptr的区别和使用
在C中:
区别:
NULL实际上就是一个宏,它一般有两个含义:一个是0,另一个是((void*)0 )。
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
C语言中没有nullptr。
使用:
NULL一般会使用在一个指针没有明确的指向时,对指针进行初始化。
一遍来说NULL等于0(根据编译器有所不同)。
在C++中:
区别:
NULL表示0
nullptr表示((void*)0 )
使用:
如果要表示指针空值使用:nullptr。
NULL和0是一样的。
注意:
- 在使用nullptr表示指针空值时,不需要包含头文件,因为nullptr是C++11作为新关键字引入的。
- 在C++11中,sizeof(nullptr) 与 sizeof((void*)0)所占的字节数相同。
- 为了提高代码的健壮性,在后续表示指针空值时建议最好使用nullptr。