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

プロフィール

編集者NT

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

よろしくお願いします。

最新コメント

0 コメント

第33回 メモリ2

第33回 メモリ2 

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

<ソースコード>

#include <stdio.h>

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

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

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


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

変数 a[0]は 0 で、アドレスは 6553076 です
変数 a[1]は 1 で、アドレスは 6553077 です
変数 a[2]は 2 で、アドレスは 6553078 です
変数 a[3]は 3 で、アドレスは 6553079 です
変数 a[4]は 4 で、アドレスは 6553080 です
変数 a[5]は 5 で、アドレスは 6553081 です
変数 a[6]は 6 で、アドレスは 6553082 です
変数 a[7]は 7 で、アドレスは 6553083 です

が表示されたはずです。
アドレスは、コンピュータの環境などによって異なります。
さて、結果をみて特にアドレス番号が1ずつずれていることがわかれば、
当然の結果ですが、1ずつということは1バイトずつということです。
char変数は定義すると、1バイトメモリを確保します。
プログラムの6行目で前回はint型でしたが、今回はchar変数を定義していますね。
i に関しては4バイト、a[8]に関しては8バイトのメモリを確保しています。
結果を見てください。アドレスの6553076から6553083の間は8ですね。
表示している結果のアドレスはその変数の先頭アドレスです。
これで型によるメモリの確保とその使い方が少し解かったはずです。
では、アドレスについて考えてみましょうか?
みなさんのコンピュータは、メモリがついていてその中にOS、様々なアプリ
ケーションが、起動しています。時計をみると既に動いているアプリケーショ
ンがあるので常時動いているアプリケーションの存在もわかりますね。
つまり、常時アプリケーションが動いているものが多いほど、コンピュータの
メモリは既にそのアプリケーションに必要なだけ確保されているということで
す。本体メモリが2GBだと、かなりのアプリケーションが動くとは思い
ますが、2GBを超えるアプリケーションは動かないのか?
と思われた方もいるかもしれません。
いずれやりますが、それは、後で説明しましょう。
気になる方はスワップファイルなどについて調べてみるといいでしょう。

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



コメント

非公開コメント