だからNULLの代わりに0を書いてもいいけど、整数の0とNULLポインタの内部表現が同じってわけじゃないの。 つまり0と書いたからといって、それが整数のつもりなのかポインタのつもりな...
C++の場合はNULLは(void*)0の型が付いてるので、NULL != 0だけど、 Cの場合は型が違っても代入できるので、NULL == 0で区別もなんもない。 コンパイラよりもプログラマに分かりやすくする為じ...
で、それが、何の意味があるんだい・・・。
そういう話は fj.comp.lang.c でやれ。