第6章 C言語のポインタ ~ & と * を使ってみる ~

 もう一度、アドレスの意味が住所であることを思い出してください。 C言語では、変数に&を付けると、変数の住所を意味することになります。

 もちろん、「東京都墨田区...」なんて住所のわけがありません。 コンピュータの中なのですから、やはり数字の羅列になってしまいます。 その数字の羅列こそが、アドレスなのです。

 今のところ、このアドレスを何に使うのか、どれくらい使えるものなのかピンとこないと思います。 しかし、しばらくこのまま付き合っていてください。

 それでは、ようやくポインタの説明に入りましょう。

 ずばり言いますと、ポインタとは住所(アドレス)を入れることを目的とした変数です。 ポインタ型として箱を用意した変数の中には、住所(アドレス)を入れることができます。

 何のことか、さっぱりわからない人は、下の図を見てください。

 本来は、ポインタ型の変数も、他の型の変数と比べて、それほど変わりのないものです。

 説明だけしていても、わかりづらいでしょうから、実際にプログラムを作って確かめてみましょう。 先ほどのプログラムに赤字の部分を追加してください。

— リスト16`–

#include <stdio.h>

void main( ) {

  int data;
  int *ptr;

  data = 5;

  printf("整数型の変数dataの値= %d\n", data);
  printf("整数型の変数dataのアドレス= %08X\n", &data);

  ptr = &data;

  printf("ポインタ型の変数ptr = %08X\n", ptr);
}

  整数型の変数dataの値= 5
  整数型の変数dataのアドレス= 0012FF7C
  ポインタ型の変数ptr = 0012FF7C

 上のような結果になったことだと思います。

 変数名の前に * (アスタリスクと読む)を付けると、 ポインタ型の変数の箱を用意することになります。 そして、int 型の変数の住所(アドレス)を入れるためには、 int ポインタ型の変数を用意しなければなりません。もちろん、他の型の場合も同じです。

 ここでは、int ポインタ型の変数 ptr に、ちゃんと int 型の変数 data の 住所(アドレス)を代入していますね。 時間があれば、int ポインタ型の変数に、char 型変数のアドレスを代入してみてください。 きっと、コンパイラに怒られるはずです。

< 前のページへ

Pagetop