許多程式設計師認為在所有的指標上下文中都應該使用NULL, 以表明該值應該被看作指標。
另一些人則認為用一個巨集來定義0, 只不過把事情搞得更復雜, 反而令人困惑。因而傾向於使用未加修飾的0。沒有正確的答案。
C 程式設計師應該明白, 在指標上下文中NULL 和0 是完全等價的, 而未加修飾的0 也完全可以接受。任何使用NULL (跟0 相對) 的地方都應該看作一種溫和的提示, 是在使用指標; 程式設計師(和編譯器都) 不能依靠它來區別指標0 和整數0。
在需要其它型別的0 的時候, 即便它可能工作也不能使用NULL, 因為這樣做
發出了錯誤的格式資訊。(而且, ANSI 允許把NULL 定義為((void *)0), 這在非指標的上下文中完全無效。特別是, 不能在需要ASCII 空字元(NUL) 的地方用NULL。如果有必要, 提供你自己的定義
#define NUL ’