あるものを指し示すもの。
PascalやC、C++などのプログラミング言語は、値のありかをポインタによって表現することが出来る。このため、アセンブリ言語並の機能性と汎用性を持つ。また、プログラミングではポインタを使いこなすことが一つの課題であった。
CやC++の多くの処理系では、ポインタの概念を表現するために、データのアドレス、すなわち単なる数値を流用している。
このような環境では、任意の数値が意味のないポインタとして解釈され、妥当なデータを指さない場合が多々あり、これが、メモリ破壊など発見困難なバグの原因となる。単なる数値である以上、これに対して加減算が行なえ、ポインタは容易にデータ領域の外を指せてしまう点が、これに拍車を駆けている。
こうして、いつの頃からか、プログラミングでは「ポインタ性悪説」が主流をなすようになった。また、ポインタを上手く扱えない人が力を付けたためか、Javaなど20世紀末頃から登場しだした自称「モダンな言語」ではポインタをサポートしないとされている。
しかし、存在しないのは、単なるアドレスをポインタとして解釈する実装であり、ポインタの概念がないわけではない。事実Javaではintやdoubleのようなプリミティブ型以外のデータは全て「ポインタ」を使わなければ使用できない。
Javaにポインタが無いというのは誤った理解であり、JavaにはCで言うところのポインタが存在するがそれを「参照」と呼んでいる、と解釈するのが正しい。