Qual è la differenza tra le variabili statiche locali e statiche globali?


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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *