4.2      配列のアドレスってどうなってるの


   アパートでは、各部屋が規則正しく並んでいるように、配列も規則正しく並んでいます。配列は宣言されると、配列の各要素の値はメモリ上の連続した領域に格納されるのです。

例えば、
      int  room  [6] ;
としたとき、int型の変数6個がメモリ上に連続して置かれるので、基底アドレス(配列の先頭のアドレス)である room[0]のアドレスが1000番地だとしたら、room[1]のアドレスは1002番地、room[2]は1004番地、room[3]は1006番地、room[4]は1008番地、room[5]は1010番地となります。

<表1、配列 int room [6]のアドレス>
配列要素 アドレス
room[0] 1000
room[1] 1002
room[2] 1004
room[3] 1006
room[4] 1008
room[5] 1010

これは、int型のデータは2バイト分の記憶領域を要するので配列要素が1進むごとに、アドレスも基底アドレスから2バイトずつ進みました。もし、これが double room [6]だったとしたら、double型は8バイトなので、room[0]が1000番地なら配列要素が1進むにつれて、アドレスは8ずつ進みます。

<表2、 配列 double room [6] のアドレス>
配列要素 アドレス
room[0] 1000
room[1] 1008
room[2] 1016
room[3] 1024
room[4] 1032
room[5] 1040

   変数の頭に「&」を付けると、その変数のアドレスを取り出すことができます。よって 配列 room[1]のアドレスは &room[1]と表すことができます。また配列の基底アドレス(先頭のアドレス)はその配列の配列名だけで表すことができます。つまり、配列名 roomは配列の基底アドレス &room[0]と同じことを意味します。

配列名=& 配列名 [0]

 


「もくじへ」