C言語で簡単なプログラムを作ります。

プロフィール

編集者NT

Author:編集者NT
編集者NTといいます。プログラミングなどのブログ、メールマガジンを書いています。

お仕事の依頼がありましたら、よろしくお願いします。

最新コメント

0 コメント

第36回 メモリ5

第36回 メモリ5

今回も、C言語で使うメモリについて説明していきます。
では、ソースコードを見てください。

<ソースコード>

#include <stdio.h>

void main()
{
  int b;
  double *c,i;
  double a[16];

  for ( i=0.0,b=0; b<16; i+=0.1,b++ )
     [b] = i;

  b = 5;
  printf( "変数 a[%d]は %5.2f で、アドレスは %d です\n", b, a[b], &a[b] );

  c = &a[b];
  printf( "変数 a[%d]は %5.2f で、アドレスは %d です\n", b, *c, c );

  c = c+2;
  printf( "変数 a[%d]は %5.2f で、アドレスは %d です\n", b+2, *c, c );

}


早速、コンパイルして実行してみましょう。
結果は、

変数 a[5]は 0.50 で、アドレスは 1244940 です
変数 a[5]は 0.50 で、アドレスは 1244940 です
変数 a[7]は 0.70 で、アドレスは 1244956 です

が表示されたはずです。
まず、9行目の変数が前回の<ソースコード>で使った int型の配列から double型に
変わったことに注目しましょう。

18行目でcのアドレスを2足してみましょう。
もちろん、前回のことを考えれば当然、double型のサイズは、8バイトでしたから、
単純に考えると1244940+(8X2)ですから1244956のアドレス番号を表示しました。
つまり、1加算すると、メモリ領域内を8バイトずつ移動すると考えると、2加算している
ので16バイト移動します。

前回同様、式を言葉で書くと、
 コンピュータが決めたアドレス+(型の大きさ×数字)
計算すると
 1244940+(8X2)で 1244956

ですね。

今回は、前回の復習もかねてdouble型で前回の説明をしました。
次回もこれを使ってメモリについて説明します。

それでは、次回をお楽しみに。
スポンサーサイト



コメント

非公開コメント