Static în programarea C

Static C Programming



În acest tutorial, vom explica cuvântul cheie static aplicându-l în variabile și funcții. Static este un cuvânt cheie utilizat în programarea C și poate fi aplicat utilizând următoarea sintaxă:

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ă.