Statico nella programmazione C

Statico nella programmazione C
In questo tutorial, spiegheremo la parola chiave statica applicandola in variabili e funzioni. Static è una parola chiave utilizzata nella programmazione C e può essere applicata utilizzando la seguente sintassi:

static type dati nome variabile

Variabili locali statiche

Quando una variabile in una funzione è statica, la variabile conserva il suo valore tra le chiamate della funzione.

//Esempio 1.C
#includere
int fun1 ()

int count = 0;
conta ++;
Conteggio di ritorno;

int fun2 ()

static int count = 0;
conta ++;
Conteggio di ritorno;

int main ()

printf ("Fun1 1st Call Returns: %d \ n", fun1 ());
printf ("Fun1 2nd Call Returns: %d \ n \ n", fun1 ());
printf ("Fun2 1st Call Returns: %d \ n", fun2 ());
printf ("Fun2 2nd Call Returns: %d \ n", fun2 ());
restituzione 0;


Nell'esempio 1.C, abbiamo due funzioni: fun1 () E fun2 (). In fun1 (), Dichiariamo una variabile (conta) e inizializziamo su 0. Quindi, incrediamo la variabile di conteggio e restituiamo il valore risultante. Usando principale(), Noi chiamiamo fun1 () due volte e ogni volta, viene restituito un valore di 1 perché la variabile di conteggio viene cancellata quando la chiamata a fun1 () è completato. In fun2 () Abbiamo dichiarato la variabile di conteggio come una variabile statica. Pertanto, il suo valore viene preservato. Usando principale(), Noi chiamiamo fun2 () Due volte: la prima volta, viene restituito un valore di 1 e la seconda volta viene restituito un valore di 2.

Variabili globali statiche

Una variabile globale statica si comporta allo stesso modo di altre variabili globali, ma non è possibile accedere da un altro programma C.

Funzioni statiche

In C, le funzioni sono globali per impostazione predefinita. Tuttavia, se dichiariamo una funzione statica, la funzione è locale e non può essere accessibile da un altro programma C.

Inizializzazione delle variabili statiche

Se una variabile statica non viene inizializzata esplicitamente, viene inizializzata come 0.

// Esempio2.C
#includere
int main ()

statico int i;
printf ("valore di i: %d \ n", i);
restituzione 0;


Nell'esempio2.C, abbiamo dichiarato una variabile statica i che non è inizializzata. Tuttavia, poiché la variabile è statica, viene automaticamente inizializzata su 0.

È importante notare che una variabile statica deve essere inizializzata da un letterale costante; Non possiamo utilizzare il valore di restituzione di una funzione per inizializzare una variabile statica.

// Esempio3.C
#includere
int fun1 ()

Ritorno 5;

int main ()

static int i = fun1 ();
printf ("valore di i: %d \ n", i);
restituzione 0;


Nell'esempio3.C, cerchiamo di inizializzare una variabile statica utilizzando il valore di ritorno di fun1 (). Tuttavia, come puoi vedere, viene restituito un errore quando viene compilato il codice.

Riepilogo

La vita di una variabile statica e la vita del programma sono uguali.

Se una variabile statica non viene inizializzata, assumerà un valore predefinito di 0.

Né una variabile statica globale né una funzione statica sono accessibili da un programma diverso da quello in cui è stato definito.