ヌルポインタ
整数の 0 をポインタにキャストするとヌルポインタとなることは規定されているが、ヌルポインタを整数にキャストしても 0 になることは規定されていない。存在するオブジェクトや関数へのポインタはヌルポインタであってはならないと規定されている。近年はほとんど無いが、歴史的には、ヌルポインタを 0 以外で表現することもあった。
ヌルポインタを参照して、そのメモリアドレスに読み書きしようとすると、それは何も指していないため、メモリ保護の仕組みが存在する実行環境では、通常セグメンテーション違反やアクセス違反が発生する。この場合、Unix系ではシグナル、Windowsでは構造化例外処理による例外が生成され、特に対処しなければ当該のプロセスは異常終了(クラッシュ)となる。一方、メモリ保護のない実行環境、例えばx86のリアルモードでは、アドレス0000:0000は読み書きが可能であり、ヌルポインタを参照したメモリアクセスは成功しクラッシュはしないものの、不定の期待しない動作になる。ただし、ヌルポインタへの参照があえて定義されている場合もある。例えば、16ビットのリアルモードx86デバイスのためにCで記述されたBIOSコードは、ヌルポインタを参照することにより、物理アドレス0にInterrupt Descriptor Table(英語版)(IDT) を書く場合がある。ヌルポインタの参照をしないようにコンパイラが最適化することもできる。それにより、セグメンテーション違反を避けられるが、他の望ましくないふるまいを引き起こす。
Pascalでは綴り記号 nil である。nil は、空の値を表す。
そのほかにも参照型の概念を持つ言語には、用語やキーワードこそ違えど同様なものが存在する。例えばJavaやC#ではnull、C++/CLIおよびC++11ではnullptr、Visual BasicおよびVisual Basic .NETではNothing、PythonではNone、Objective-CとRubyではnil、REALbasicではNilがヌルポインタに相当するキーワードである。ポインタではなく参照を利用する言語の場合、概念上ヌルポインタに相当するものはヌル参照 (null reference) と呼ばれる。
ヌルポインタ(英: null pointer 英語: [nʌl pɔɪntə(ɹ)])とは、何のオブジェクトも指していないことを表す特別なポインタの値である。
プログラムではヌルポインタを、不定長のリストの終端を表したり、何らかの動作の結果が失敗であることを表したりするのに使用する。後者の用法は、nullable型やオプション型の Nothing 値(None 値)を使用することもできる。
ヌルポインタの値や型がいかなるものかという詳細は言語によって異なる。実際的にはいかなるオブジェクトも参照しないという言語もあり、参照先を求めようとするとJava(NullPointerException)のように例外が発生するものもある。
ヌルポインタはほとんどの処理系(この場合、言語処理系プログラムだけではなく、ハードウェアまでを含めて)で、内部的に数値0で表現されるが、ごく希に、0でない処理系もある。