logo

Static în C

Static este un cuvânt cheie folosit în limbajul de programare C. Poate fi folosit atât cu variabile, cât și cu funcții, adică putem declara o variabilă statică și o funcție statică. O variabilă obișnuită este limitată la domeniul în care este definită, în timp ce domeniul de aplicare al variabilei statice este în întregul program.

Cuvântul cheie static poate fi utilizat în următoarele situații:

    Variabilă globală statică
    Când o variabilă globală este declarată cu un cuvânt cheie static, atunci este cunoscută ca o variabilă globală statică. Este declarat în vârful programului, iar vizibilitatea sa este pe tot parcursul programului.Funcție statică
    Când o funcție este declarată cu un cuvânt cheie static cunoscut sub numele de funcție statică. Durata sa de viață este pe tot parcursul programului.Variabilă locală statică
    Când o variabilă locală este declarată cu un cuvânt cheie static, atunci este cunoscută ca o variabilă locală statică. Memoria unei variabile locale statice este valabilă pe tot parcursul programului, dar sfera de vizibilitate a unei variabile este aceeași cu variabilele locale automate. Cu toate acestea, atunci când funcția modifică variabila locală statică în timpul primului apel de funcție, atunci această valoare modificată va fi disponibilă și pentru următorul apel de funcție.Variabilele membre statice
    Când variabilele membre sunt declarate cu un cuvânt cheie static într-o clasă, atunci acesta este cunoscut ca variabile membre statice. Ele pot fi accesate de toate instanțele unei clase, nu cu o anumită instanță.Metoda statica
    Funcția membru a unei clase declarate cu un cuvânt cheie static este cunoscută ca metodă statică. Este accesibil pentru toate instanțele unei clase, nu cu o anumită instanță.

Să înțelegem printr-un exemplu.

 #include int main() { printf('%d',func()); printf('
%d',func()); return 0; } int func() { int count=0; // variable initialization count++; // incrementing counter variable return count; } 

În codul de mai sus, funcția func() este apelată. În func(), variabila count este actualizată. De îndată ce funcția își încheie execuția, memoria variabilei de numărare va fi eliminată. Dacă nu dorim să eliminăm contorizarea din memorie, atunci trebuie să folosim variabila count ca static. Dacă declarăm variabila ca fiind statică, atunci variabila nu va fi eliminată din memorie nici când funcția își finalizează execuția.

Ieșire

 1 1 

Variabila statica

O variabilă statică este o variabilă care își păstrează valoarea pe parcursul diferitelor apeluri de funcție.

Sintaxă

Sintaxa unei variabile statice este prezentată mai jos:

 static data_type variable_name; 

Să ne uităm la un exemplu simplu de variabilă statică.

 #include int main() { printf('%d',func()); printf('
%d',func()); return 0; } int func() { static int count=0; count++; return count; } 

În codul de mai sus, am declarat variabila count ca fiind statică. Când funcția() este apelată, valoarea count este actualizată la 1, iar în timpul următorului apel de funcție, valoarea variabilei count devine 2. Prin urmare, putem spune că valoarea variabilei statice persistă în apelul funcției .

Ieșire

 1 2 

Funcție statică

După cum știm că funcțiile non-statice sunt globale în mod implicit, înseamnă că funcția poate fi accesată și în afara fișierului, dar dacă declarăm funcția ca fiind statică, atunci limitează domeniul de aplicare al funcției. Funcția statică poate fi accesată numai într-un fișier.

Funcția statică ar arăta astfel:

 static void func() { printf('Hello javaTpoint'); } 

Diferențele b/w variabile statice și globale

Variabilele globale sunt variabilele care sunt declarate în afara funcției. Aceste variabile globale există la începutul programului, iar domeniul său de aplicare rămâne până la sfârșitul programului. Poate fi accesat și în afara programului.

Variabilele statice sunt limitate la fișierul sursă în care sunt definite, adică nu sunt accesibile de către celelalte fișiere sursă.

Atât variabilele statice, cât și cele globale au inițializare statică. Aici, inițializarea statică înseamnă că dacă nu atribuim nicio valoare variabilei, atunci în mod implicit, variabilei va fi atribuită o valoare 0.

Diferențele b/w statică locală și variabilă statică globală

Variabilă globală statică

Dacă variabila este declarată cu un cuvânt cheie static în afara funcției, atunci este cunoscută ca variabilă globală statică. Este accesibil pe tot parcursul programului.

Variabilă locală statică

Variabila cu un cuvânt cheie static este declarată în interiorul unei funcții este cunoscută ca o variabilă locală statică. Sfera variabilei locale statice va fi aceeași cu variabilele locale automate, dar memoria acesteia va fi disponibilă pe toată durata execuției programului. Când funcția modifică valoarea variabilei locale statice în timpul unui apel de funcție, atunci aceasta va rămâne aceeași chiar și în timpul următorului apel de funcție.

Proprietățile unei variabile statice

Următoarele sunt proprietățile unei variabile statice:

  • Memoria unei variabile statice este alocată într-o variabilă statică.
  • Memoria sa este disponibilă pe tot parcursul programului, dar domeniul de aplicare va rămâne același cu variabilele locale automate. Este
  • valoarea va persista pe parcursul diferitelor apeluri de funcții.
  • Dacă nu atribuim nicio valoare variabilei, atunci valoarea implicită va fi 0.
  • O variabilă statică globală nu poate fi accesată în afara programului, în timp ce o variabilă globală poate fi accesată de alte fișiere sursă.