statisch Datentyp Variablenname
Statische lokale Variablen
Wenn eine Variable in einer Funktion statisch ist, behält die Variable ihren Wert zwischen Funktionsaufrufen bei.
//Beispiel 1.c#einschließen
int fun1()
int-Zählung = 0;
zählen++;
Rücklaufzahl;
int fun2()
statischer int-Zähler = 0;
zählen++;
Rücklaufzahl;
int main()
printf("fun1 1. Aufruf gibt : %d\n",fun1());
printf("fun1 2. Aufruf gibt : %d\n\n",fun1());
printf("fun2 1. Aufruf gibt : %d\n",fun2());
printf("fun2 2. Aufruf gibt : %d\n",fun2());
0 zurückgeben;
In Beispiel 1.c haben wir zwei Funktionen: Spaß1() und Spaß2(). Im Spaß1(), wir deklarieren eine Variable (count) und initialisieren sie auf 0. Dann inkrementieren wir die Zählvariable und geben den resultierenden Wert zurück. Verwenden von Main(), wir nennen Spaß1() zweimal und jedes Mal wird der Wert 1 zurückgegeben, da die Zählvariable gelöscht wird, wenn der Aufruf an Spaß1() abgeschlossen. Im Spaß2() wir haben die Zählvariable als statische Variable deklariert. Daher bleibt sein Wert erhalten. Verwenden von Main(), wir nennen Spaß2() zweimal: beim ersten Mal wird ein Wert von 1 zurückgegeben und beim zweiten Mal wird ein Wert von 2 zurückgegeben.
Statische globale Variablen
Eine statische globale Variable verhält sich wie andere globale Variablen, kann jedoch nicht von einem anderen C-Programm aus aufgerufen werden.
Statische Funktionen
In C sind Funktionen standardmäßig global. Wenn wir jedoch eine statische Funktion deklarieren, ist die Funktion lokal und kann nicht von einem anderen C-Programm aus aufgerufen werden.
Initialisierung von statischen Variablen
Wenn eine statische Variable nicht explizit initialisiert wird, wird sie als 0 . initialisiert.
//Beispiel2.c#einschließen
int main()
statisches int i;
printf("Wert von i : %d\n",i);
0 zurückgeben;
In Beispiel2.c haben wir eine statische Variable i deklariert, die nicht initialisiert ist. Da die Variable jedoch statisch ist, wird sie automatisch auf 0 . initialisiert.
Es ist wichtig zu beachten, dass eine statische Variable mit einem konstanten Literal initialisiert werden muss; Wir können den Rückgabewert einer Funktion nicht verwenden, um eine statische Variable zu initialisieren.
//Beispiel3.c#einschließen
int fun1()
zurück 5;
int main()
statisches int i = fun1();
printf("Wert von i : %d\n",i);
0 zurückgeben;
In Beispiel3.c versuchen wir, eine statische Variable zu initialisieren, indem wir den Rückgabewert von using verwenden Spaß1(). Wie Sie jedoch sehen können, wird beim Kompilieren des Codes ein Fehler zurückgegeben.
Zusammenfassung
Die Lebensdauer einer statischen Variablen und die Lebensdauer des Programms sind gleich.
Wenn eine statische Variable nicht initialisiert wird, nimmt sie den Standardwert 0 . an.
Weder auf eine globale statische Variable noch auf eine statische Funktion kann von einem anderen Programm als dem, in dem sie definiert wurde, zugegriffen werden.