C语言中NULL是个宏,在stddef.h中定义:
#ifndef NULL
#ifdef __cplusplus //如果是C++则为0
#define NULL 0
#else
#define NULL ((void *)0) //C中为((void *)0)
#endif
#endif
无论是哪个语言,从数值角度上来说,NULL就是0。作为指针类型变量,赋值为NULL时,表示该指针是个空指针。NULL常用来判断一个指针变量是否为空指针,从而确定程序下一步的操作。如,程序开始,定义一个指针变量并初始化为空,在程序过程中,有可能使用该变量,也可能未使用该变量,则在程序返回前,可以通过判断其是否为空指针,来进行内存释放(防止内存泄露)。
void func()
{
char *p=NULL;
....
if ( p != NULL ) //当p用malloc成功分配过内存时,其值是个非0值。
free(p);
}
就0,以后编程会经常用到这个东西,特别是分配内存的时候
在C语言中NULL被定义为:
#define NULL ((void*)0)
表示其值是0,但意义是空指针。把一个指针赋值为NULL,通常的说法是“将指针悬空”,这样可以防止对无效地址的访问。
但是在C++语言中NULL被定义为:
#define NULL 0
VC里也是这样定义的。
NULL的值为0。写成地址就是0x00000000。
#define NULL (void*)0