C言語では変数や関数などを管理するための方法で、記憶クラスというものがあります。
記憶クラスで試験の出題率が高く私が重要だと思ったのは「static」と「auto」という記憶クラス指定子です。
auto(自動変数)
・変数を宣言する時は何もつけずに宣言をする。
例) int a;
・宣言した関数内ではメモリ領域が確保されますが、
関数からの制御が離れた後はメモリ領域を確保することが”できない”。
static(局所変数)
・変数を宣言する時にstatic記憶クラス指定子を付けて宣言をする。
例) static int a;
・宣言した関数内ではメモリ領域が確保され、関数からの制御が離れた後はメモリ領域も確保することが”できる”。
・プログラムが実行を開始する時の一度だけ初期化される。
以上がstaticとautoの違いです。
特に複数の関数でstaticとautoを用いた変数の値を求める問題は出題率が高いので、要チェックです。
また、記憶クラス指定子でもう一つ忘れてはいけないものとして 「extern記憶クラス指定子があります。
私はexternの存在を忘れてしまい、試験に出題されて困ったことを覚えています。
externも出題率が高めなので、externの性質も覚える必要があります。
extern(大域変数)
・変数を宣言する時はstaticと同じようにextern記憶クラス指定子をつけて宣言をする。
例) extern int y;
・externを付けて宣言した変数は、実体が他のファイルにあることを示し、その実体がある場所を参照する。
以上のことが私が記憶クラス指定子の範囲で重要だと思ったことをまとめました。 ここで重要なのは記憶クラス指定子の違いをしっかりと見極めることだと思います。