English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Statische Variablen sind Variablen, die im Speicher während der Laufzeit des Programms erhalten bleiben, d.h. ihr Lebenszyklus ist die gesamte Laufzeit des Programms. Dies unterscheidet sich von automatischen Variablen, die nur während der Laufzeit der Funktion im Speicher bleiben und bei Beendigung der Funktion zerstört werden.
Statische Variablen werden im Datenbereich des Speichers gespeichert. Der Datenbereich ist ein Teil des virtuellen Adressraums des Programms.
Alle statischen Variablen, die nicht explizit initialisiert oder auf Null initialisiert sind, werden im nicht initialisierten Datenbereich (auch als BSS-Bereich bezeichnet) gespeichert. Im Gegensatz dazu werden initialisierte statische Variablen im initialisierten Datenbereich gespeichert.
Ein Beispiel ist wie folgt:
static int x = 5; static int y; Die statische Variable x wird im initialisierten Datenbereich gespeichert und die statische Variable y im BSS-Bereich.
Ein Beispiel für ein Programm zur Demonstration des statischen Variablen in der Programmiersprache C ist wie folgt gezeigt-
#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; }
Die Ausgabe des obigen Programms ist wie folgt:-
5 6 7 8 9 10
Lassen Sie uns nun das obige Programm verstehen.
in dieser Funktionfunc()
i ist initialisiert auf4Die statische Variable wird im initialisierten Datenbereich gespeichert. Dann wird i inkrementiert und sein Wert zurückgegeben. Der folgende Codeabschnitt zeigt dies:-
int func() { static int i = 4 ; i++; return i; }
in der Funktionmain()
diese Funktionfunc()
aufgerufen6mal aufgerufen und gibt den Wert von i zurück. Da i eine statische Variable ist, bleibt sie im Speicher während der Laufzeit des Programms erhalten und stellt einen konsistenten Wert bereit. Der folgende Codeabschnitt zeigt dies:-
printf("%d\n", func()); printf("%d\n", func()); printf("%d\n", func()); printf("%d\n", func()); printf("%d\n", func()); printf("%d\n", func());