ローカル変数
C言語およびC++のローカル変数は、関数内の同じ「ブロック」という領域内からのみ参照可能な変数である。C99よりも前の規格ではブロックの先頭部分でのみ定義可能だったが、C99からはC++同様に任意の位置で定義可能である。
ある関数fにおけるローカル変数aのスコープ (scope) すなわち可視性は、その関数f内において、その変数aが宣言された場所から、その変数aが定義されたブロックを抜けるまでである。スコープ外からは参照することができない。ローカル変数aを定義したブロック内で別の関数gを呼び出すと、関数gからはその変数aが見えなくなるが、メモリ上には依然として存在しており、関数gが終了して関数fに戻り、変数aのスコープに入ると再び見えるようになる。
下記の例において、2行目で宣言されているローカル変数iのスコープは2行目から6行目の中括弧までであり、4行目で宣言されているローカル変数jのスコープは4行目から5行目の中括弧までである。
C言語のローカル変数の寿命 (lifetime) は、デフォルトではそのローカル変数を定義したブロックを抜けるまでである。ローカル変数は宣言により自動的にメモリ割り当てが行なわれるが、ブロックを抜けて寿命が尽きると自動的にメモリ割り当てが解除される。