NULL って (void*)0 とされてることが多いと思うんだけど、
これは NULL って単に人間にとっての分かりやすさのために
定義されているマクロなんだよな。

ポインタとしての 0 は常にヌルポインタであって、
それはアドレスとしての 0x00000000番地 ではないわけだけど、
とすると 0x00000000 番地に書き込みたいときは

    int* p = (int*)0;
    *p = 12345;

とかやっちゃっていいもんなんだろうか。いや、そんなこと
やりたいと思うケースは少ないと思うけど。インラインアセンブラ
使うべき?