読み方 : ポインタがた

ポインタ型【pointer type】

概要

ポインタ型とは、コンピュータプログラムにおいて、ある変数の値ではなく、その値が格納されているメモリ上のアドレス(番地)を保持するデータ型。C言語やC++などハードウェア寄りの低水準の操作が可能な言語で、直接的なメモリ管理を行うために用意されている。
ポインタ型のイメージ画像

コンピュータデータメインメモリRAM)上に配置して管理しており、各データには固有のアドレスが割り当てられている。通常の変数が「値そのもの」を保持するのに対し、ポインタ型の変数(ポインタ変数とも呼ばれる)は「その値が存在する場所」を保持する。住所録に書かれた住所のようなもので、住所録を見れば目的の場所へたどり着けるように、ポインタを参照すれば目的のデータへアクセスできる。

C言語では、変数のメモリアドレスを取得するために「&」演算子を使用し、ポインタが指すアドレスの値を参照するために「*」演算子(間接参照演算子)を使用する。例えば、整数型の変数 x のアドレスを格納するポインタは int *p = &x; のように宣言し、*p と記述することで x の値に間接的にアクセスできる。

ポインタ型が特に有用なのは、大きなデータ構造を関数へ渡す場面や、動的メモリ管理を行う場面である。データそのものをコピーして渡す代わりにアドレスだけを渡すことで、処理効率が向上する。また、malloc などの関数を用いてプログラム実行中にメモリを動的に確保する際も、確保された領域のアドレスをポインタ型の変数に代入して受け取る。連結リスト木構造といった動的なデータ構造も、ポインタによってノード間をつなぐことで実現される。

一方、ポインタの誤用はプログラムの深刻な不具合につながる。例えば、初期化されていないポインタを参照する「未初期化ポインタ」、解放済みのメモリを参照し続ける「ダングリングポインタ」、確保したメモリを解放し忘れる「メモリリーク」などの問題が生じることがある。こうした扱いの難しさから、JavaPythonなどの高水準言語ではポインタを直接操作する仕組みを持たず、メモリ管理を実行系(ランタイム)に委ねる設計が採用されている。

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