Migliore risposta
globale e locale: è correlato allambito, ovvero dove può essere utilizzato
statico: è correlato al tempo e alla volatilità, ovvero per quanto tempo può essere utilizzato
la variabile statica nel programma C e C ++ è definita (memoria allocata e valore iniziale zero) solo una volta, anche il controllo del programma esegue nuovamente listruzione di dichiarazione. Il valore e la durata della variabile statica vengono mantenuti fino alla fine del programma ma possono essere utilizzati allinterno dellambito.
void staticTest(){
static int i;
printf("\%d\n",i);
i++;
}
void main(){
staticTest();
staticTest();
staticTest();
}
Risultato:
0
1
2
Nellesempio precedente viene dimostrato luso della variabile statica locale.
statica globale: puoi dichiarare una variabile statica nellambito globale, inoltre sarà quasi uguale alle altre variabili globali tranne per il fatto che ha il valore iniziale zero, se non le assegni alcun valore.
Risposta
Statico locale:
- Il valore predefinito è zero
- Memorizzato nella sezione dati (bss o inizializzato) di memoria
- Lambito o la visibilità è allinterno del blocco o di una funzione
- La vita della variabile statica locale inizia e termina solo con il programma.
Statico globale:
- Se una variabile globale è statica, lambito o la visibilità è solo allinterno di quel file, anche luso di extern in un altro file non funzionerà . Fornisce un errore di collegamento.
Esempio 1:
static int a=20;
void xyz()
{
printf("\%d, ", a);
a = 100;
}
int main()
{
printf("\%d, ", a);
{
static int a = 10;
printf("\%d, \n", a);
xyz();
}
printf("\%d", a);
}
// Output is 20, 10, 20, 100