プログラムが実行されているとき、プログラムや変数などはメモリー上に格納されています。
すべてのメモリーにはアドレスが振られています。変数にアクセスするときプログラムは
このアドレスを指定してアクセスします。アドレスは単なる数字なのでプログラマーにとっては
わかりにくい存在です。そこで変数名というプログラマーにわかりやすい名前で
変数にアクセスすることができます。ポインターは変数名ではなく、アドレスで
変数にアクセスするためのものです。
今まで何気なく変数を定義してきました。変数の定義とは、メモリーに変数を入れる
ための領域を確保し、そのアドレスを覚えておくという操作なのです。
試しにint型の変数を宣言し、それがどの領域(アドレス)に確保されたかを表示する
プログラムを示します。
#include <stdio.h>
void main(){
int n;
printf("変数nは%x番地に確保されました\n", &n);
}
|
上の例のようにアドレスを知るためには、変数の前に「&」を
つけます。
アドレスで変数にアクセスするためには、アドレスを格納する変数というのが
必要になります。これは何型の変数なのでしょうか? この変数がポインタと言います。
ポインタはアドレスを入れるための専用の変数です。これは今使っている
コンピュータによってサイズが異なります。現在のコンピュータの大半は
32bitのサイズを持っています。
また、ポインタは色々な種類があり、int型のポインタ、char型のポインタなどが
あります。