ホームページ > バックエンド開発 > C++ > C/C++ では静的変数はどこに保存されますか?

C/C++ では静的変数はどこに保存されますか?

王林
リリース: 2023-09-15 21:09:03
転載
1353 人が閲覧しました

C/C++ では静的変数はどこに保存されますか?

#静的変数は、プログラムの実行中にメモリに残る変数です。つまり、そのライフサイクルはプログラム全体の実行時間です。これは、関数の実行中にのみメモリに残り、関数の終了時に破棄される自動変数とは異なります。

静的変数はメモリのデータ セグメントに保存されます。データ セグメントは、プログラムの仮想アドレス空間の一部です。

明示的に初期化されていない、またはゼロに初期化されていないすべての静的変数は、初期化されていないデータ セグメント (初期化されていないデータ セグメントとも呼ばれます) に格納されます。 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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート