次の方法で共有


有効期間

「」の " 有効期間 " は変数または関数を持つプログラムの実行中にピリオドがあります。識別子のストレージの継続時間は有効期間が決まります。

ストレージ クラス指定子 静的 で宣言された識別子は静的ストレージの期間が設定されています。静的ストレージの期間の識別子 (「グローバルに」) はプログラム中に格納および定義済みの値があります。ストレージが予約済みであり識別子に格納された値は一度だけプログラムの起動前に初期化します。内部または外部リンケージで宣言される識別子は静的ストレージの期間が設定されています (リンケージ を参照してください。

静的 " ストレージ クラスの指定子がない場合宣言された識別子は関数の内部で宣言した自動保存の間隔が設定されています。自動保存の間隔 (「ローカル識別子」) の識別子に識別子を定義または宣言されたブロック内でのみ格納および定義済みの値があります。自動識別子はプログラムがそのブロックに入るとストレージ (値) とプログラムの終了時に割り当てられたブロックされた新しいストレージです。リンケージではない関数で宣言された識別子は自動保存の間隔が設定されています。

次の規則は識別子をグローバル静的 () またはローカル (自動) 有効期間があるかどうかを指定します :

  • すべての関数に静的なります。したがってプログラムの実行中にいつでもあります。外部のレベルで宣言された識別子 (つまり関数定義と同じレベルのプログラムのすべてのブロックの外側) グローバル静的な) 有効期間が必要です。

  • ローカル変数には初期化子が存在する場合その変数は ( 静的 として宣言されない限り作成されるたびに初期化します。関数パラメーターまたはローカルになります。ブロック内の識別子に対して宣言に 静的 のストレージ クラスの指定子を含めることによってグローバルな有効期間を指定できます。一度宣言した変数 静的 はブロックの 1 エントリからその値を保持します。

グローバル有効期間の識別子は作成元のプログラムの実行中 (たとえば 静的 のキーワードで宣言された外部で宣言された変数をローカル変数) ですがプログラム内のすべてのパーツに表示されないことがあります。範囲と表示 を表示する方法の詳細については" " および非終了 ストレージ クラス指定子 の詳細についてはストレージ クラス を参照してください。

メモリが必要になります (DLL) malloc のような特殊なライブラリ ルーチンを使用して作成された割り当てることができます。動的メモリ割り当てはライブラリ ルーチンを使用するため言語の一部とは見なされません。 ランタイム ライブラリ リファレンス " の malloc の関数を参照してください。

参照

概念

有効期間、スコープ、表示、およびリンケージ