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

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

王林
王林転載
2023-09-15 21:09:031253ブラウズ

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 までご連絡ください。