Variabili persistenti nel linguaggio C
Nel linguaggio C l'istruzione static mi permette di creare variabili persistenti in una funzione.
static tipo nome
Dove tipo e nome sono rispettivamente il formato e il nome della variabile.
A cosa serve?
Le variabili interne delle funzioni sono variabili locali. Una volta terminata l'esecuzione della funzione, il loro valore si perde.
L'istruzione static mantiene in memoria il valore di una variabile interna della funzione dopo ogni chiamata.
Un esempio pratico
Definisco una funzione fun() con una variabile locale (n) tramite l'istruzione static.
- #include <stdio.h>
- int fun() {
- static int n=0;
- printf("n = %d \n",n);
- n++;
- return n;
- }
- int main() {
- fun();
- fun();
- fun();
- return 0;
- }
Il programma principale main() effettua tre chiamate alla funzione fun().
La funzione fun() stampa il valore corrente della variabile n e la incrementa di uno.
L'output è il seguente:
n = 0
n = 1
n = 2
Dopo ogni chiamata la funzione fun() conserva in memoria il valore della variabile locale static n.
Per questa ragione è detta variabile persistente.
E così via.