我想知道Null是什么类型的.这可能是重复的,但我一直在搜索上获得有关void类型的信息.也许更好的方法是可以为任何类型函数返回NULL吗?例如:
int main(){
dosomething();
return NULL;
}
Run Code Online (Sandbox Code Playgroud)
那样有用吗?
的每个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.)