#静的変数は、プログラムの実行中にメモリに残る変数です。つまり、そのライフサイクルはプログラム全体の実行時間です。これは、関数の実行中にのみメモリに残り、関数の終了時に破棄される自動変数とは異なります。
静的変数はメモリのデータ セグメントに保存されます。データ セグメントは、プログラムの仮想アドレス空間の一部です。
明示的に初期化されていない、またはゼロに初期化されていないすべての静的変数は、初期化されていないデータ セグメント (初期化されていないデータ セグメントとも呼ばれます) に格納されます。 BSS セグメント)。対照的に、初期化された静的変数は、初期化されたデータ セグメントに格納されます。
例は次のとおりです-
static int x = 5; static int y; The static variable x is stored in the initialized data segment and the static variable y is stored in the BSS segment.
C 言語の静的変数を示すプログラムは次のとおりです-
ライブ デモンストレーション
#include<stdio.h> int func(){ static int i = 4 ; i++; return i; } int main(){ printf("%d\n", func()); printf("%d\n", func()); printf("%d\n", func()); printf("%d\n", func()); printf("%d\n", func()); printf("%d\n", func()); return 0; }
上記のプログラム 出力は次のとおりです -
5 6 7 8 9 10
さて、上記のプログラムを理解しましょう。
関数 func() では、i は 4 に初期化された静的変数です。したがって、初期化データセグメントに格納されます。次に、i がインクリメントされ、その値が返されます。これを示すコード スニペットは次のとおりです。 -
int func(){ static int i = 4 ; i++; return i; }
関数 main() で、関数 func() が 6 回呼び出され、出力された i の値が返されます。 i は静的変数であるため、メモリ内に残り、プログラムの実行中に一貫した値が提供されます。これを示すコード スニペットは次のとおりです。 -
printf("%d\n", func()); printf("%d\n", func()); printf("%d\n", func()); printf("%d\n", func()); printf("%d\n", func()); printf("%d\n", func());
以上がC/C++ では静的変数はどこに保存されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。