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

2024年11月28日 20:52
有5个网友回答
网友(1):

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

网友(2):

就0,以后编程会经常用到这个东西,特别是分配内存的时候

网友(3):

在C语言中NULL被定义为:
#define NULL ((void*)0)
表示其值是0,但意义是空指针。把一个指针赋值为NULL,通常的说法是“将指针悬空”,这样可以防止对无效地址的访问。

但是在C++语言中NULL被定义为:
#define NULL 0
VC里也是这样定义的。

网友(4):

NULL的值为0。写成地址就是0x00000000。

网友(5):

#define NULL (void*)0