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.

    1. #include <stdio.h>
    2. int fun() {
    3. static int n=0;
    4. printf("n = %d \n",n);
    5. n++;
    6. return n;
    7. }
    8. int main() {
    9. fun();
    10. fun();
    11. fun();
    12. return 0;
    13. }

    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.

     


     

    Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

    FacebookTwitterLinkedinLinkedin
    knowledge base

    Libri di approfondimento

    Le funzioni in C