statisk datatyp variabelnamn
Statiska lokala variabler
När en variabel i en funktion är statisk, bevarar variabeln sitt värde mellan funktionssamtal.
// Exempel1.c#omfatta
int fun1 ()
intantal = 0;
räkna ++;
returräkning;
int fun2 ()
statisk inträde = 0;
räkna ++;
returräkning;
int main ()
printf ("fun1 första samtalet returnerar:% d \ n", fun1 ());
printf ("fun1 andra samtalet returnerar:% d \ n \ n", fun1 ());
printf ("fun2 första samtalet returnerar:% d \ n", fun2 ());
printf ("fun2 andra samtalet returnerar:% d \ n", fun2 ());
returnera 0;
I exempel 1.c, vi har två funktioner: fun1 () och fun2 (). I fun1 (), vi deklarerar en variabel (count) och initialiserar den till 0. Sedan ökar vi räknevariabeln och returnerar det resulterande värdet. Använder sig av huvud (), vi ringer fun1 () två gånger, och varje gång returneras värdet 1 eftersom räknevariabeln rensas när samtalet till fun1 () är klart. I fun2 () vi förklarade räkningsvariabeln som en statisk variabel. Därför bevaras dess värde. Använder sig av huvud (), vi ringer fun2 () två gånger: första gången returneras värdet 1 och andra gången returneras värdet 2.
Statiska globala variabler
En statisk global variabel beter sig på samma sätt som andra globala variabler, men den kan inte nås från ett annat C-program.
Statiska funktioner
I C är funktioner globala som standard. Men om vi deklarerar en statisk funktion är funktionen lokal och kan inte nås från ett annat C-program.
Initialisering av statiska variabler
Om en statisk variabel inte initialiseras uttryckligen initialiseras den som 0.
// Exempel2.c#omfatta
int main ()
statisk int i;
printf ("Värde på i:% d \ n", i);
returnera 0;
I exempel 2.c, deklarerade vi en statisk variabel i som inte är initialiserad. Men eftersom variabeln är statisk initialiseras den automatiskt till 0.
Det är viktigt att notera att en statisk variabel måste initialiseras med en konstant bokstav. vi kan inte använda en funktions returvärde för att initialisera en statisk variabel.
// Exempel3.c#omfatta
int fun1 ()
retur 5;
int main ()
statisk int i = fun1 ();
printf ("Värde på i:% d \ n", i);
returnera 0;
I exempel 3.c, vi försöker att initialisera en statisk variabel med hjälp av returvärdet på fun1 (). Som du kan se returneras dock ett fel när koden kompileras.
Sammanfattning
Livslängden för en statisk variabel och programmets livslängd är lika.
Om en statisk variabel inte initialiseras tar den ett standardvärde på 0.
Varken en global statisk variabel eller en statisk funktion är tillgänglig från ett annat program än det i vilket det definierades.