NULL在C/C++中是一个宏,定义为:
#if !defined(NULL)
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif // __cplusplus
#endif // NULL
请注意,在C中NULL定义为(void*)类型,是因为在c语言中void *数据可以赋值给各种类型的指针,而不进行类型检查。
所以在C语言中:
int * p=NULL;
才能够编译通过。
在C++中,NULL为数值0,不能定义成(void *),否则会出现编译错误。主要是因为C++对类型检查比较严格。