ポインタは、「何かを指し示すデータ」をいいます。「ポインタ変数にはアドレスが格納される」とも説明できますが、その意味は、プログラムの実行時に変数や関数などはメモリに配置されていて、アドレスがそれらの場所を表しているからなのです。
例えば
int n;
と宣言すると、nはintを格納する箱のようなものですから、メモリのどこかにintの領域が確保されます。そのアドレスが「nへのポインタ」であるわけです。
ポインタ変数の宣言は、
int *p;
のように、名前の前にアスタリスク(*)を記述します。するとpは「intへのポインタ」を格納する変数と宣言されます。
ポインタに付随する演算に*(間接参照演算子)と&(アドレス演算子)の2つがあります。&はオペランドのアドレスを求める演算子で、
p = &n;
と書くと、nのアドレスを求め、それがpに代入されるので、結果としてpはnを指し示す(ポイントする)ことになります。イメージとしては次のようなもので、pの箱の中の青丸がnのアドレスを表現しています。すると青矢印線のように、pはnを指すようになります。
*はポインタをオペランドとする演算子で、ポインタが指すオブジェクトの値を求めます。
例えば、
int n, *p, a; n = 100; p = &n; a = *p + 20;
では、結果としてaに120が代入されます。2行目でnに100が代入され、3行目でpはnをポイントするようになり、4行目の*pは100になるからです。
Copyright © ITmedia, Inc. All Rights Reserved.