NULLポインタ

読み:ヌルポインタ
外語:null pointer
品詞:名詞

無効である、空のポインタ。

ポインタは、メモリやオブジェクトの参照に必要な概念のため、Cやその系統の言語を始め、多くの言語で用いられている。

この時、ものを指している状態の他に、何も指していない状態が表現できないと、何かと不便である。そこで、この何も指していないポインタを用意し、これをNULLポインタとする。

内容

C/C++のポインタの内部処理は実装によるが、物理アドレスや論理アドレスが用いられることが多い。

この時、数値の0をvoid *型キャストしたもの、すなわち「(void *)0」を「NULLポインタ」という。CのJIS規格では「空ポインタ」と書かれている。

特徴

Cの標準規格では、NULLというマクロ定数が定義されており、キャストの差はあれ、値としては0が定義されている。

次のように使うことが出来る。

char *p = NULL;

if (!p) { … /* if (p==0) と等価 */

世の中には様々なマイクロプロセッサがあり、現実にNULLポインタの内部表現が「0番地」では無いものも存在する。

しかしこの場合でも、ソースコード中の値は0のままで良い。なぜなら、NULLポインタというものは抽象的な概念であり、物理的なアドレスを指しているわけではないからである。

もし内部表現が0でない計算機の場合、必要に応じてCコンパイラはその値に自動的に変換してくれる。従って、NULLポインタと0は完全に等価であり、可換であるとして扱うことが出来る。