Salve,non riesco a capire bene la differenza fra queste due variabili,teoricamente la definzione e' entrambe hanno la durata estesa all' intera esecuzione del programma,ma la variabile static puo essere modificata solo all' interno del blocco in cui e' dichiarata.
Ma allora quali sarebbero i vantaggi di usare una static rispetto a una extern?
Se scrivo:
codice:
#include<stdio.h>
void stampa(void);
main()
{
stampa();
stampa();
stampa();
return 0;
}
void stampa(void)
{
static int x=1;
x*=2;
printf("%d",x);
}
Mi stampa 248 perche' x e' statica,ma ho lo stesso identico effetto se scrivo:
codice:
#include<stdio.h>
void stampa(void);
int x=1;
main()
{
stampa();
stampa();
stampa();
return 0;
}
void stampa(void)
{
extern int x;
x*=2;
printf("%d",x);
}
Potreste farmi alcuni esempi in cui e' conveniente usare una static piuttosto che una extern?