関数をつくり,使うためには,ソースプログラムを図1の ように記述する.必要な記述は,以下の3つである.
-4pt
関数は特定の処理をする専用のプログラムで,必要な引数を伴って関数名を書けばその関 数のプログラムを実行することができる.処理に必要なデータは関数を呼び出すときに引数とし て渡す.呼出元の引数を実引数,呼び出された関数側の引数を仮引数と言う.関数を呼び 出したとき,実引数の値が仮引数の変数にコピーされる.それを使って,関数は処理を行 い.呼出元へ値を返すときには,return文を使う.return文により返す値を戻 り値と言う.
auto int hogehoge; extern int fugafuga; register int foo; static int bar;
記憶クラスは4種類あるが,この中でstaticはローカル変数3とグローバル変数では, 動作が異なる.したがって,5種類の動作があると考える.
記憶クラスを指定しない場合,自動変数(auto)となる.デフォルトは自動変数.そ
のため,通常,自動変数を使う場合,記憶クラス指定子autoは書かない.
記憶クラス | 指定子 | 特徴 |
自動変数 | auto | ローカル変数の場合は,関数が呼び出される毎に記 憶領域の確保と初期化(初期値の指定がある場合)が行われ,関数の処理が終わったときに その変数は消滅する.グローバル変数の場合は,プログラム実行中,変数の記憶領域は保持される. |
ローカル変数の静的変数 | static | プログラムの実行に先立って,記憶領域の確保と 初期が行われる.プログラムの実行中,記憶領域は保持される. |
グローバル変数の静的変数 | static | 分割コンパイルの場合,そのファイルの みで使えるグローバル変数ということを示している. |
外部変数 | extern | この記憶クラスはグローバル変数のみに使う.これが 指定されると,記憶領域の確保は行われず,どこか他のファイルにこの変数があること を示す.記憶領域は,どこか他のファイルにある変数を使う. |
レジスター変数 | register | レジスターを記憶領域として使う.レジスター はCPUの記憶領域で,メインメモリーよりも高速のアクセスが可能である.したがって, 処理の高速になる. |