sizeof(NULL)≠sizeof(0)の可能性は別として、
数値を期待するところにNULLを渡せばそれは0を渡したのと同じことになる。

コンパイラによってはNULLを汎用ポインタ型の0として明示的に定義してる場合もあるが
これはよけいなお世話とも言うべきで、ANSIでいうところのヌルを表す数値定数は0で
あって、それ以外の何者でもない。

実装によってはヌルポインタのビットパターンが0じゃないものもあるが、
それはコンパイラが0から正規のヌルポインタに翻訳する。

sizeof(NULL)がsizeof(0)と等しくない環境は多い。
可変長引数やプロトタイプ宣言されていない関数への引数としてヌルポインタを
渡したい場合は、明示的にポインタ型へのキャストを行う必要がある。

結論としてだね、引数を含んだプロトタイプ宣言がなされているであろう関数
exit()に引数としてNULLを渡すのは合法で、結果として0を渡したのと同じことになる。

型検査が行われて、ポインタ型を整数引数に渡したとかいう警告がでるかもしれんが。