c语言中的NULL宏包含在在哪个头文件里

我说的是c不是c++啊(我不知道它们有没有可能相同),然后它又是怎么定义的,为什么在字符串里面它代表0或着字符0(手机输入不好打出符号),然后在指针里又能代表空指针直接给一些指针赋值?

https://zh.cppreference.com/w/c/types/NULL

宏 NULL 是实现定义的空指针常量,可为

    值为 0 的整数常量表达式

    转型为 void* 的值为 0 的整数常量表达

空指针常量能转换为任何类型;转换结果是该类型的空指针值。

    定义于头文件 <stddef.h>

    定义于头文件 <string.h>

    定义于头文件 <wchar.h>

    定义于头文件 <time.h>

    定义于头文件 <locale.h>

    定义于头文件 <stdio.h>

    定义于头文件 <stdlib.h>

    #define NULL /*implementation-defined*/

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-09-19
NULL 定义在 stddef.h 中,例如在某个 linux 发行版 stddef.h 如下:

stddef.h:
#if defined (_STDDEF_H) || defined (__need_NULL)
#undef NULL             /* in case <stdio.h> has defined it. */
#ifdef __GNUG__
#define NULL __null
#else   /* G++ */
#ifndef __cplusplus
#define NULL ((void *)0)
#else   /* C++ */
#define NULL 0
#endif  /* C++ */
#endif  /* G++ */
#endif  /* NULL not defined and <stddef.h> or need NULL.  */
#undef  __need_NULL

相似回答