2.1 記憶域クラス

  1.自動的記憶域クラス(auto)
 自動的記憶域クラスで定義された識別子は、その定義されたプロシージャが実行中の時のみ寿命を持ち、用意された記憶領域は自動的に解放されます。

 以下のプログラムでは、main.iとmain.jはプログラム実行中には寿命を持ちます。他方、test.kは関数testの実行中のみ寿命をもち、testの実行が終ると寿命は終了し、用意された記憶領域は自動的に解放されます。C言語では記憶域クラスの指定を何もしない場合、autoと見なされます。明示的にautoをつけて宣言した識別子は、自動的な記憶域クラスを持ちますが、C言語ではこれは省略するのが一般的です。
<プログラムリスト>

#include <stdio.h>

int test(int m);

int main(void)
{
  int i, j;      /* 自動的記憶域クラスをもつ変数i, j */
  i = 10;
  j = test(i); printf("%d\n",j);
  j = test(i); printf("%d\n",j);
}



int test(int m)
{
  auto int k;      /* 自動的記憶域クラスをもつ変数 k */
                     /* auto は書かなくても良い */

  k = m * 10;
  return k;
}
<実行結果>
 100
 100