どんなオブジェクトへのポインタとも区別できる。どんな関数へのポインタとも区別できる。ヌルポインタを表現する定数がヌルポインタ定数、即ちマクロのNULLである。NULLは各ヘッダの中で、整数値0に割り当てられている。整数値0は任意のポインタ型に変換可能であり、その結果はヌルポインタになる。ヌルポインタが他のポインタに代入されたり、比較されるときは、そのポインタ型に変換される。*型などのあらゆる型へのポインタとの比較が可能である。*型で定義されており、ファイルのオープン失敗時にはNULLを返す。*型にキャストする必要はない。//×ヌルポインタの内部表現が全ビット0であるという保障はない。0;」はint型のポインタpに対して、整数定数の0を代入する。0はヌルポインタに変換されて、pに代入される。NULL;」と同じ意味になる。pの構成ビットがすべて0であるとは限らない。ヌルポインタの内部表現がどのようになっているかは処理系に依存するからである。10);」というコードはメモリをヌルポインタで初期化できているとは限らない。*p[10];であれば、ヌルポインタで初期化される。静的記憶寿命を持つオブジェクトに対して、明示的に初期値を与えなければ0(この場合はヌルポインタ)で初期化されるからである。関数の外で宣言・定義するオブジェクトは、staticを指定しなくても静的記憶寿命を持つので、staticがなくても問題ない。C言語/文法/文字列(3984d)。