Statico nella programmazione in C

Static C Programming



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

statico {tipo di dati} {nome variabile}







Variabili locali statiche

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



//Esempio1.c

#includere

intdivertimento1()
{

intcontare=0;
contare++;
Restituzionecontare;
}

intdivertimento2()
{
statico intcontare=0;
contare++;
Restituzionecontare;
}

intprincipale()
{
printf ('fun1 1a chiamata ritorna: %d ',divertimento1());
printf ('fun1 2a chiamata restituisce: %d ',divertimento1());

printf ('fun2 1a chiamata ritorna: %d ',divertimento2());
printf ('fun2 2a chiamata restituisce: %d ',divertimento2());

Restituzione 0;
}


Nell'Esempio 1.c abbiamo due funzioni: divertimento1() e divertimento2() . In divertimento1() , dichiariamo una variabile (count) e la inizializziamo a 0. Quindi, incrementiamo la variabile count e restituiamo il valore risultante. Usando principale() , Noi chiamiamo divertimento1() due volte, e ogni volta, viene restituito il valore 1 perché la variabile count viene azzerata quando la chiamata a divertimento1() è completato. In divertimento2() abbiamo dichiarato la variabile count come variabile statica. Pertanto, il suo valore è preservato. Usando principale() , Noi chiamiamo divertimento2() due volte: la prima volta viene restituito il valore 1 e la seconda viene restituito il valore 2.



Variabili globali statiche

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





Funzioni statiche

In C, le funzioni sono globali per impostazione predefinita. Tuttavia, se dichiariamo una funzione statica, allora la funzione è locale e non è possibile accedervi da un altro programma C.

Inizializzazione di variabili statiche

Se una variabile statica non è inizializzata in modo esplicito, viene inizializzata come 0.



//Esempio2.c

#includere

intprincipale()
{
statico intio;

printf ('Valore di i: %d ',io);

Restituzione 0;
}


In Esempio2.c, abbiamo dichiarato una variabile statica i che non è inizializzata. Tuttavia, poiché la variabile è statica, viene inizializzata automaticamente su 0.

È importante notare che una variabile statica deve essere inizializzata da un letterale costante; non possiamo usare il valore di ritorno di una funzione per inizializzare una variabile statica.

//Esempio3.c

#includere

intdivertimento1()
{
Restituzione 5;
}

intprincipale()
{
statico intio=divertimento1();
printf ('Valore di i: %d ',io);
Restituzione 0;
}


Nell'Esempio3.c, proviamo a inizializzare una variabile statica utilizzando il valore restituito di divertimento1() . Tuttavia, come puoi vedere, viene restituito un errore quando il codice viene compilato.

Riepilogo

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

Se una variabile statica non è 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 è stata definita.