C言語でnullポインタをdereferenceするのは違法。コンパイラによってその後のコード含めて抹消される可能性すらある。

0番地のメモリを参照しにいくコード自体は環境によっては合法nullポインタが0以外の内部表現の場合は0番地にデータを割り当てる事も出来るだろう。ただし、整数0をポインタに入れるとnullポインタになってしまうので注意

これだけの話なのになんでグダグダ続いてんの?