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型変数の中身を横から変えてしまうサンプルを示しました。 何となくポインタに関して理解する助けになれば幸いです。


次:関数ポインタ

- C言語入門 記事一覧

おまけ

IPv6基礎検定

YouTubeチャンネルやってます!