ポインタのお話〜変数のおさらい〜

【変数のおさらい】

ポインタのお話をする前に、ちょっとだけ変数のおさらいをしましょう。

「変数」とは「値」というものを扱うための器です。
値というものは水みたいなもので器がないところに流し込むと、まるで地面に吸い込まれるように消えてなくなってしまいます。
必要な値をなくさないようにするためには、変数という器が必要になります。

変数を使うためには、まず「変数を用意しますよ」と宣言をしなければなりません。
宣言する場合には、どんな形式のどのぐらいの大きさの変数を用意するかを記述します。
変数が配列になる場合にはその配列の個数も共に記述します。
変数の大きさ・形を決めるには「データ型」というものを知っておく必要があります。

データ型にはいろいろな種類があります。
その中でも、特によく使う(と思われる)のは

 char short int long float double

というような種類のデータ型だと思います。

宣言の仕方ですが例えば、

 char cData;

と宣言すると、cDateというニックネームをつけたchar型の変数が出来上がります。値という水を入れるための器を用意したと考えていいと思います。
この器にはどれぐらいの量の水(値)がはいるかというと、-128〜127(または0〜255)の多さの水が入ります。

うん、わかりにくい…。(^^;)
その大きさを例えば

┃┃
┗┛

これぐらいと考えておきましょう。

char 以外にもデータ型はいろいろな種類があります。
上記のchar型を基準として、ほかのデータ型がどういう大きさになるのかを見てみましょう。
例えば、

 short sData;

と宣言したとすると、sDataという名前の器の大きさは

┃│┃
┗┷┛

これぐらいになります。器の大きさは倍になっていますね。
また、

 long lData;

と宣言すると、

┃│││┃
┗┷┷┷┛

さらに倍の大きさのlDataという名前の器が用意できたことになります。
このように、変数というものは様々なサイズの器であると考えられる、ということが理解できたでしょうか。

注意) 器の中身の扱いについては、ここでは省略します。(_o_)

【器はどこから借りるの?】

いろんな大きさの器を用意してみましたが、これらの器、いったいどこから用意してきたのでしょう?

これは、コンピュータの中にある作業場・メモリを器としてお借りしているのです。このメモリという作業場の管理をしているのが、コンピュータを動かすための環境・OS(Windowsなど)です。
OSはプログラムが起動すると、その規模に応じて「作業場を使うなら、ここからここまでを使ってね」と作業場を貸してくれるのです。
さて、「作業場はここからここまで使っていいよ」の「ここから」と「ここまで」というのはどうやって指示しているのでしょう?

作業場は実はある一定の小さな単位で区切られています。
その単位の大きさは【変数のおさらい】での図でいうと、char型の

┃┃
┗┛

の大きさになります。文字で書くと「1バイト(Byte)」という大きさになります。
OSはその小さな区切りごとにOSが管理しやすいように数字で番地(アドレス)をつけています。

上記の「ここから」と「ここまで」には、このアドレスが使われているのです。

【どんな感じでアドレスはつけられているの?】

先ほど使った宣言とその大きさをあらわす器にこのアドレスを当てはめてみましょう。

 long lData;
 A B C D
┃│││┃
┗┷┷┷┛

Aの区画のアドレスを0x200(16進数で200という意味)とすると、B〜Dのアドレスはそれぞれ
B: 0x201
C: 0x202
D: 0x203
となります。

お隣の区切り同士は番号が一つだけ違っているということがわかりますね。

C言語を使うときには16進数という数の数え方に慣れておきましょう。