ポインタ変数 【pointer variable】
プログラム上の変数やオブジェクトなどは、実行時にメインメモリ上の特定の場所に値を保管するための領域を割り当てられる。C言語などのプログラムでは、この領域のメモリ上での所在位置(メモリアドレス)を「ポインタ」(pointer)として操作することができる。
C言語の場合、「int *p;」のように「*」(アスタリスク)を付けることでポインタ型の変数を宣言することができる。この場合は「int型変数へのポインタp」を宣言している。プログラム上で「p」はアドレスの値を表しており、アドレスが指し示す領域に格納された値を取り出すには「*p」とする。
「int i;」のように通常の変数があるとき、アドレス取得演算子「&」(アンパサンド)を用いて、「p=&i;」のように変数のアドレスをポインタ変数に代入することができる。pにはiの値が格納されているメモリアドレスが格納される。このとき「*p」でiの値を参照することができる。
ポインタ変数に対しては加減算(整数の加算、減算、インクリメント、デクリメント)を行うことができ、配列変数のアドレスを代入して順番に(あるいは特定の位置の)要素を取得するといった操作を行うことができる。その場合、「1」を加減算するとメモリアドレスを1バイトずつ動かすのではなく、対象の変数のデータ長だけ動かすことになる。
(2024.6.27更新)