statisk datatype variabelnavn
Statiske lokale variabler
Når en variabel i en funksjon er statisk, bevarer variabelen verdien mellom funksjonsanrop.
// Eksempel1.c#inkludere
int fun1 ()
int-antall = 0;
telle ++;
retur teller;
int fun2 ()
statisk intall = 0;
telle ++;
returantall;
int main ()
printf ("fun1 første samtale returnerer:% d \ n", fun1 ());
printf ("fun1 2. samtale returnerer:% d \ n \ n", fun1 ());
printf ("fun2 første samtale returnerer:% d \ n", fun2 ());
printf ("fun2 2. samtale returnerer:% d \ n", fun2 ());
retur 0;
I eksempel 1.c, vi har to funksjoner: moro1 () og fun2 (). I moro1 (), vi erklærer en variabel (count) og initialiserer den til 0. Deretter øker vi tellevariabelen og returnerer den resulterende verdien. Ved hjelp av hoved(), vi ringer moro1 () to ganger, og hver gang returneres verdien 1 fordi tellevariabelen slettes når anropet til moro1 () det er ferdig. I fun2 () vi erklærte tellevariabelen som en statisk variabel. Derfor bevares verdien. Ved hjelp av hoved(), vi ringer fun2 () to ganger: første gang returneres verdien 1, og den andre gangen returneres verdien 2.
Statiske globale variabler
En statisk global variabel oppfører seg på samme måte som andre globale variabler, men den er ikke tilgjengelig fra et annet C-program.
Statiske funksjoner
I C er funksjoner globale som standard. Men hvis vi erklærer en statisk funksjon, er funksjonen lokal og kan ikke nås fra et annet C-program.
Initialisering av statiske variabler
Hvis en statisk variabel ikke initialiseres eksplisitt, initialiseres den som 0.
// Eksempel2.c#inkludere
int main ()
statisk int i;
printf ("Verdi av i:% d \ n", i);
retur 0;
I eksempel 2.c, erklærte vi en statisk variabel i som ikke er initialisert. Men fordi variabelen er statisk, initialiseres den automatisk til 0.
Det er viktig å merke seg at en statisk variabel må initialiseres med en konstant bokstavelig; vi kan ikke bruke returfunksjonen til en funksjon for å initialisere en statisk variabel.
// Eksempel3.c#inkludere
int fun1 ()
retur 5;
int main ()
statisk int i = fun1 ();
printf ("Verdi av i:% d \ n", i);
retur 0;
I eksempel 3.c, vi prøver å initialisere en statisk variabel ved å bruke returverdien på moro1 (). Som du kan se, returneres det imidlertid en feil når koden kompileres.
Sammendrag
Levetiden til en statisk variabel og levetiden til programmet er like.
Hvis en statisk variabel ikke initialiseres, vil den ta en standardverdi på 0.
Verken en global statisk variabel eller en statisk funksjon er tilgjengelig fra et annet program enn det det ble definert i.