prev up next   top/contents search

comp.lang.c FAQ 列表· 问题 5.9

Q如果NULL0作为空指针常量是等效的,我应该使用哪一个?


A许多程序员认为NULL应在所有指针的上下文中都使用,以提醒其值为指针。另一些人认为,围绕NULL0的混乱,通过隐藏0在宏后面只会加剧,他们更愿意使用未加修饰的0。没有一个唯一的正确答案。(另请参见问题 9.417.10。)C 程序员必须理解,在指针的上下文中NULL0`NULL` 是可以互换的,并且未转换的0是完全可以接受的。任何使用NULL`NULL`0(而不是 `0`0都应被视为一个温和的提示,表示涉及指针;程序员不应依赖它(无论是为了自己的理解还是编译器的理解)来区分指针0与整数

。只有在指针的上下文中,NULL`NULL`NULL和 0 才是等价的。0不应在需要另一种类型的NULL时使用 `0`(即使它可能有效),因为它会传递错误的风格信息。(此外,ANSI 允许将`NULL`定义为 `((void *)0)`,这在非指针的上下文中根本无效。)特别是,当需要 ASCII 空字符(NUL)时,不要使用NULL`NULL`

	#define NUL '\0'
。如果必须,请提供您自己的定义。

参考文献:K&R1 第 5.4 节 pp. 97-8
K&R2 第 5.4 节 p. 102


prev up next   contents search
关于此 FAQ 列表   关于 Eskimo   搜索   反馈   版权

Eskimo North 托管