auto ストレージ・クラス指定子により、自動ストレージ を取る変数を明示的に宣言できます。auto ストレージ・クラスは、ブロック内部で宣言される変数のデフォルトです。自動ストレージを持つ変数 x は、x が宣言されたブロックが終了するときに削除されます。
auto ストレージ・クラス指定子は、 ブロックで宣言された変数の名前または関数仮パラメーターの名前にだけ適用できます。 ただし、これらの名前には、デフォルトで自動ストレージがあります。 したがって、ストレージ・クラス指定子 auto は、通常、データ宣言では冗長です。
パラメーターを除き、どの auto 変数も初期化できます。自動オブジェクトを明示的 に初期化しない場合は、その値を確定することができません。 初期値を提供する場合は、初期値を表す式を C または C++ の有効な式にすることができます。オブジェクトの定義を含むプログラム・ブロックに入るたびに、 オブジェクトはその初期値にセットされます。
goto 文を使用し、ブロックの中央にジャンプする場合は、 そのブロック内の自動変数は初期化されないことに留意してください。
auto ストレージ・クラス指定子が指定されたオブジェクトには、 自動ストレージ期間が指定されます。 ブロックに入るたびに、そのブロックに定義された auto オブジェクトに対するストレージが 使用可能になります。ブロックが終了すると、そのオブジェクトは使用できなくなります。リンケージ指定 がなく、static ストレージ・クラス指定子を使用しないで宣言されたオブジェクトは、自動ストレージ期間を持ちます。
再帰的に呼び出す関数内で auto オブジェクトを定義すると、ブロックの各呼び出しご とに、メモリーがオブジェクトに割り振られます。
auto 変数には、ブロック・スコープがありますが、リンケージはありません。
関連参照