statisk datatype variabelnavn
Statiske lokale variabler
Når en variabel i en funktion er statisk, bevarer variablen sin værdi mellem funktionsopkald.
// Eksempel1.c#omfatte
int fun1 ()
int-antal = 0;
tælle ++;
returantal
int fun2 ()
statisk int-antal = 0;
tælle ++;
returantal
int main ()
printf ("fun1 1. opkald returnerer:% d \ n", fun1 ());
printf ("fun1 2. opkald returnerer:% d \ n \ n", fun1 ());
printf ("fun2 1. opkald returnerer:% d \ n", fun2 ());
printf ("fun2 2. opkald returnerer:% d \ n", fun2 ());
returnere 0;
I eksempel 1.c, vi har to funktioner: sjov1 () og fun2 (). I sjov1 (), vi erklærer en variabel (antal) og initialiserer den til 0. Derefter øges tællingsvariablen og returnerer den resulterende værdi. Ved brug af hoved (), vi ringer sjov1 () to gange, og hver gang returneres en værdi på 1, fordi tællingsvariablen ryddes, når opkaldet til sjov1 () er afsluttet. I fun2 () vi erklærede tællingsvariablen som en statisk variabel. Derfor bevares dens værdi. Ved brug af hoved (), vi ringer fun2 () to gange: første gang returneres en værdi på 1, og anden gang returneres en værdi på 2.
Statiske globale variabler
En statisk global variabel opfører sig på samme måde som andre globale variabler, men den kan ikke tilgås fra et andet C-program.
Statiske funktioner
I C er funktioner som standard globale. Men hvis vi erklærer en statisk funktion, er funktionen lokal og kan ikke tilgås fra et andet C-program.
Initialisering af statiske variabler
Hvis en statisk variabel ikke initialiseres eksplicit, initialiseres den som 0.
// Eksempel2.c#omfatte
int main ()
statisk int i;
printf ("Værdi af i:% d \ n", i);
returnere 0;
I eksempel 2.c, erklærede vi en statisk variabel i, der ikke er initialiseret. Men fordi variablen er statisk initialiseres den automatisk til 0.
Det er vigtigt at bemærke, at en statisk variabel skal initialiseres med en konstant bogstavelig; vi kan ikke bruge en funktions returværdi til at initialisere en statisk variabel.
// Eksempel3.c#omfatte
int fun1 ()
retur 5;
int main ()
statisk int i = fun1 ();
printf ("Værdi af i:% d \ n", i);
returnere 0;
I eksempel 3.c, vi forsøger at initialisere en statisk variabel ved hjælp af returværdien af sjov1 (). Som du kan se, returneres en fejl, når koden kompileres.
Resumé
Levetiden for en statisk variabel og programmets levetid er ens.
Hvis en statisk variabel ikke initialiseres, får den en standardværdi på 0.
Hverken en global statisk variabel eller en statisk funktion er tilgængelig fra et andet program end det, hvori det blev defineret.