在c语言的指针使用中,NULL的值是?

如题所述

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

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-10-21
就0,以后编程会经常用到这个东西,特别是分配内存的时候
第2个回答  推荐于2018-03-01
在C语言中NULL被定义为:
#define NULL ((void*)0)
表示其值是0,但意义是空指针。把一个指针赋值为NULL,通常的说法是“将指针悬空”,这样可以防止对无效地址的访问。

但是在C++语言中NULL被定义为:
#define NULL 0
VC里也是这样定义的。本回答被网友采纳
第3个回答  2012-10-21
NULL的值为0。写成地址就是0x00000000。
第4个回答  推荐于2017-11-25
#define NULL (void*)0本回答被提问者采纳
相似回答