static {tip de date} {nume variabilă}
Variabile locale statice
Când o variabilă dintr-o funcție este statică, variabila își păstrează valoarea între apelurile de funcție.
//Exemplu1.c
#include
intfun1()
{
intnumara=0;
numara++;
întoarcerenumara;
}
intfun2()
{
static intnumara=0;
numara++;
întoarcerenumara;
}
intprincipal()
{
printf ('fun1 primul apel revine:% d n',fun1());
printf ('fun1 al 2-lea apel revine:% d n n',fun1());
printf ('fun2 primul apel revine:% d n',fun2());
printf ('fun2 al 2-lea apel revine:% d n',fun2());
întoarcere 0;
}
În exemplul 1.c, avem două funcții: fun1 () și fun2 () . În fun1 () , declarăm o variabilă (numărare) și o inițializăm la 0. Apoi, incrementăm variabila de numărare și returnăm valoarea rezultată. Folosind principal() , noi sunam fun1 () de două ori și de fiecare dată, se returnează o valoare 1, deoarece variabila de numărare este ștearsă la apelul către fun1 () este gata. În fun2 () am declarat variabila count ca variabilă statică. Prin urmare, valoarea sa este păstrată. Folosind principal() , noi sunam fun2 () de două ori: prima dată, se returnează o valoare 1, iar a doua oară se returnează o valoare 2.
Variabile globale statice
O variabilă globală statică se comportă în același mod ca alte variabile globale, dar nu poate fi accesată dintr-un alt program C.
Funcții statice
În C, funcțiile sunt globale în mod implicit. Cu toate acestea, dacă declarăm o funcție statică, atunci funcția este locală și nu poate fi accesată din alt program C.
Inițializarea variabilelor statice
Dacă o variabilă statică nu este inițializată în mod explicit, atunci este inițializată ca 0.
//Exemplu2.c
#include
intprincipal()
{
static inteu;
printf ('Valoarea lui i:% d n',eu);
întoarcere 0;
}
În Exemplul 2.c, am declarat o variabilă statică i care nu este inițializată. Cu toate acestea, deoarece variabila este statică, este inițializată automat la 0.
Este important să rețineți că o variabilă statică trebuie inițiată de un literal constant; nu putem folosi valoarea returnată a unei funcții pentru a inițializa o variabilă statică.
//Exemplu3.c#include
intfun1()
{
întoarcere 5;
}
intprincipal()
{
static inteu=fun1();
printf ('Valoarea lui i:% d n',eu);
întoarcere 0;
}
În Exemplul 3.c, încercăm să inițializăm o variabilă statică utilizând valoarea returnată a fun1 () . Cu toate acestea, după cum puteți vedea, o eroare este returnată atunci când codul este compilat.
rezumat
Durata de viață a unei variabile statice și durata de viață a programului sunt egale.
Dacă o variabilă statică nu este inițializată, atunci va lua o valoare implicită de 0.
Nici o variabilă statică globală, nici o funcție statică nu sunt accesibile dintr-un alt program decât cel în care a fost definită.