関数とプログラムの構造について
static
変数の宣言時にstaticを付与することにより、それは「スタティック変数」や「静的変数」と呼ばれます。大きく分けて、関数内で使用されているか、関数外で使用されるかで分類が出来ます。
関数内は変数に対して付与することができます。
static int total;
通常の宣言の前に「static」をつけるだけです。そして、この宣言をされた変数は、通常の内部変数とは異なり、関数が終了したあとも値を保持し続けます。では、外部変数とは何が違うのでしょうか?staticがついたからといっても、内部変数であることには変わりません。つまり、利用出来るのは宣言された関数の中だけなのです。関数は何度でも呼び出されることがあるため、2回目以降の処理時に以前の情報を使用したい場合には静的変数を使用することで実現可能です。
関数の外で宣言する場合には変数の他にも、関数もstaticをつけた宣言が可能です。これは、関数内での宣言とは用途が異なってきますが、C言語では複数ファイルのソース群から実行ファイルを生成することが可能です。
つまり、他のファイルで作成された関数から、別のファイルの関数を呼び出すことも出来ます。しかし、それを防ぐ理由があるときには、関数外での外部変数宣言や関数にstaticを付与することにより、そのファイル内でのみ使用可能なものとして宣言することが出来るのです。変数や関数が、そのファイル内では共通で使いたいけれど、外部では使用する必要がない場合や、公開したくない場合にはstaticをつけた宣言をすることで規制をかけられるのです。