ポインタ 【pointer】 ptr

概要

ポインタ(pointer)とは、何かの位置を指し示すための仕組みや道具などのこと。プログラミングでは、変数や関数などが置かれたメインメモリ上の番地などを格納する特殊な変数のことをポインタという。

コンピュータがプログラムを実行する際、プログラムに含まれる変数や配列構造体、関数、オブジェクトインスタンスなどはメモリ上の特定の位置に配置されるが、その位置を指し示すメモリ空間上のアドレス値などを格納した変数のことをポインタという。C言語/C++言語に実装されたものが特に有名である。

操作対象の位置を表すメモリアドレス値を直接参照したり書き換えたりすることができるため、アセンブリ言語に近い低レベル(ハードウェア寄り)の操作や制御を行うのに都合が良い。反面、実行時に不正な値を入力されるなどしてメモリ上の予期せぬ位置のデータやコードを読み書きしてしまう場合があり、保安上の弱点(セキュリティ脆弱性)となる深刻なバグがしばしば発生する。

C言語ではアドレス演算子と呼ばれる単項演算子「&」(アンパサンド)を用いて p = &x; のように記述すると、変数xのポインタを取得(この例ではポインタ型の変数pに代入)することができる。逆に、間接演算子と呼ばれる「*」(アスタリスク)を用いて y = *p; のように記述すると、ポインタ変数pが指し示す値を取り出す(この例では変数yに代入)することができる。ポインタ型変数のポインタを取得することもできる。

C言語では関数の引数は値渡し(呼び出し側が指定した値を複製して引き渡す)にしか対応しないが、変数へのポインタを渡すことで呼び出し元の変数の内容を関数側が参照したり書き換えたりすることができ、参照渡しに近い動作を可能にする(参照の値渡し、ポインタ渡しなどと呼ばれる)。

また、関数の位置をポインタに格納して間接的に呼び出すことができるため、関数の引数を別の関数へのポインタとすることで、関数内で使用する関数を呼び出し側が引数を通じて指定・変更するといったこともできる。

(2019.1.23更新)

他の辞典による解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。