Variabili Statiche

La classe di memoria di static definisce una variabile statica. Il modificatore static viene indicato prima del tipo di dati.

Esempio:

int somefunc()
  {
   static int flag=10;
   ...
   return(flag);
  }

Una variabile static può essere inizializzata da una costante o espressione costante corrispondente al suo tipo, a differenza di una semplice variabile locale, che può essere inizializzata da qualsiasi espressione.

Variabili statiche esistono dal momento di esecuzione del programma e vengono inizializzate solo una volta prima che le funzioni specializzate OnInit() vengano chiamate. Se i valori iniziali non vengono specificati, le variabili della classe di memorizzazione static stanno assumendo i valori zero iniziali.

Le variabili locali dichiarate con la parola chiave static mantengono i loro valori per tutto il lifetime della funzione . Ad ogni chiamata di funzione successiva, tali variabili locali contengono i valori che avevano durante la chiamata precedente.

Tutte le variabili in un blocco, ad eccezione di parametri formali di una funzione, possono essere definiti come statico. Se una variabile dichiarata a livello locale non è una statica, la memoria per tale variabile viene assegnata automaticamente ad uno stack di programma.

Esempio:

int Counter()
  {
   static int count;
   count++;
   if(count%100==0) Print("La fuzione Counter viene chiamata",count," times");
   return count;
  }
voidOnStart()
  {
//---
   int c=345;
   for(int i=0;i<1000;i++)
     {
      int c=Counter();
     }
   Print("c =",c);
  }

Vedi anche

Tipi di Dati, Incapsulamento ed Estensibilità dei Tipi,Inizializzazione delle Variabili, Ambito Visibilità e Durata delle Variabili, Creazione ed Eliminazione di Oggetti,Membri di Classi Statiche