変数のアドレスを求めることができるようになりました。このアドレスを変数に代入することはできないのでしょうか。アドレスも単なる整数値なので、変数に代入できそうですね。実は、アドレスを格納するための変数がポインタなのです。
ポインタを使うためには、一般の変数と同じようにブロックの最初に宣言する必要があります。int 型の変数のアドレスを格納するポインタを pi とすると
int *pi;
というように宣言します。この場合、pi は「int 型へのポインタ」となります。
double 型の変数のアドレスを格納するポインタを pd とすると
double *pd;
というように宣言します。この時 pd は「double 型へのポインタ」となります。ポインタ型を宣言するとき「*」のことをポインタ宣言子(pointer declarator)といいます。
さて、
int a;
int *pa;
pa = &a;
とすると、変数 a のアドレスが pa に代入されました。この時「ポインタ pa は変数 a を指している」とか「変数 a へのポインタ pa」などと表現します。
int a, b;
int *pa;
a = 5;
pa = &a;
b = *pa;
このとき「*pa」は変数 a の値を表しています。「*」のことを間接参照演算子(indirection reference operator)といいます。
ソースコード源文件
|
---|
実行結果
scanf 関数を使う時、変数名に & をつけて、scanf 関数に変数のアドレスを教えていたのです。 ポインタとは、変数のアドレスを格納するための変数である。 Chapte6 @ C言語目録 @ HomeWork List @ 昭亮's Homepage |