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

プロフィール

編集者NT

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

よろしくお願いします。

最新コメント

0 コメント

第32回 メモリ1 準備

第32回 メモリ1 準備

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

<ソースコード>

#include <stdio.h>

void main()
{
 int i, a[8];

 for ( i=7; i>=0; i-- )
   a[i] = i;

 /* 関数の値を表示します */
 for ( i=0; i<8; i++ )
   printf( "変数 a[%d]は %d で、アドレスは %d です\n",
     i, a[i], &a[i] );
}


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

変数 a[0]は 0 で、アドレスは 6618584 です
変数 a[1]は 1 で、アドレスは 6618588 です
変数 a[2]は 2 で、アドレスは 6618592 です
変数 a[3]は 3 で、アドレスは 6618596 です
変数 a[4]は 4 で、アドレスは 6618600 です
変数 a[5]は 5 で、アドレスは 6618604 です
変数 a[6]は 6 で、アドレスは 6618608 です
変数 a[7]は 7 で、アドレスは 6618612 です

が表示されたはずです。
アドレスは、コンピュータの環境などによって異なります。
さて、結果をみて特にアドレス番号が4ずつずれていることがわかれば、
もう、何がいいたいか?わかったはずです。変数を配列で確保しているので
当然の結果ですが、4ずつということは4バイトずつということです。
int変数は定義すると4バイトメモリを確保します。
プログラムの5行目で2つ変数が定義されてますね。
i に関しては4バイト、a[8]に関しては32バイトのメモリを確保しています。
結果をみて6618584から6618612の間は28ですね。
表示している結果のアドレスはその変数の先頭アドレスです。したがって、
確保したメモリのアドレスの範囲は6618584から6618616です。
つまり、double型やchar型で定義するともちろんアドレスの範囲はその型に
応じて変わります。
今回の説明が難しいと思われた方もいると思いますので、次回はメモリのつい
て少し解説します。


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



コメント

非公開コメント