什么类型是NULL?

Hov*_*tar 4 c null

我想知道Null是什么类型的.这可能是重复的,但我一直在搜索上获得有关void类型的信息.也许更好的方法是可以为任何类型函数返回NULL吗?例如:

int main(){
    dosomething();
    return NULL;
}
Run Code Online (Sandbox Code Playgroud)

那样有用吗?

Eri*_*hil 7

的每个C 2011 7.19 3,NULL"扩展到一个实现定义空指针常数"(当任何几个头的已经包括:<locale.h>,<stddef.h>,<stdio.h>,<stdlib.h>,<string.h>,<time.h>,或<wchar.h>).

根据6.3.2.3 3,空指针常量是"[A] n整数常量表达式,其值为0,或者这样的表达式转换为类型void*."因此,C实现可以NULL简单地定义为0或者((void *) 0)例如.请注意,前者是一个int,而不是一个指针,但它可以与指针进行比较,如if (p == NULL) ….

通常,NULL旨在用于指针,而不是用于int值.

在大多数C实现中,转换NULL为整数将产生零.但是,我没有在C标准中看到这一点.(例如,我没有看到保证(int) (void *) 0 == 0.)