C言語入門:int型ポインタ
ここでは、ポインタに関して理解するために、int型ポインタを扱ってみたいと思います。
サンプル
#include <stdio.h>
int
main()
{
int a = 1;
int *ptr;
ptr = &a;
*ptr = 128;
printf("%d\n", a);
return 0;
}
上記例を実行すると「1」ではなく「128」という文字が表示されます。
上記サンプルプログラムでは、最初に変数「a」を宣言したときには「1」という値を代入しています。 その後、このサンプルプログラムでは変数「a」に対する直接的な操作は行っていません。
上記サンプルでは、int型ポインタである変数「ptr」に変数「a」のアドレスを代入しています。 その後、「*ptr」に対して「128」という値を代入しています。 ポインタ変数の前に「*」を書くと、「ポインタが指すアドレスの実態」という意味になります。 そのため、「aのアドレスを示しているptrが指している先の実態」ということで、「*ptr」へ書き込むことは変数「a」に書き込むことになります。
そして、最終的には操作をしていないはずの変数「a」の中身が「1」から「128」に変わって表示されます。
最後に
ここでは、int型ポインタを使って実態のあるint型変数の中身を横から変えてしまうサンプルを示しました。 何となくポインタに関して理解する助けになれば幸いです。
次:関数ポインタ
おまけ