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.
// Exemplul 1.c#include
int fun1 ()
int count = 0;
conta ++;
număr de returnări;
int fun2 ()
număr int static = 0;
conta ++;
număr de returnări;
int main ()
printf ("fun1 primul apel returnează:% d \ n", fun1 ());
printf ("fun1 al doilea apel returnează:% d \ n \ n", fun1 ());
printf ("fun2 primul apel returnează:% d \ n", fun2 ());
printf ("fun2 al doilea apel returnează:% d \ n", fun2 ());
retur 0;
În exemplul 1.c, avem două funcții: fun1 () și fun2 (). În fun1 (), declarăm o variabilă (număr) ș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 și 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.
// Exemplul 2.c#include
int main ()
static int i;
printf ("Valoarea lui i:% d \ n", i);
retur 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ă.
// Exemplul 3.c#include
int fun1 ()
retur 5;
int main ()
static int i = fun1 ();
printf ("Valoarea lui i:% d \ n", i);
retur 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ă.