Le variabili esterne nel linguaggio C
Le variabili esterne sono variabili definite per essere accessibili a tutte le funzioni di un programma in C.
Nel linguaggio C le funzioni usano variabili locali.
Pertanto, le variabili della funzione main() non sono accessibili dalle altre funzioni del programma e viceversa.
Nota. Per far comunicare la main() con le altre funzioni devo passare i valori in input tramite i parametri nella chiamata della funzione e gestire quelli in output (valori di ritorno) con le istruzioni return. Tuttavia, se ogni funzione deve accedere a una variabile, questa soluzione diventa poco pratica. In questi casi è meglio usare una variabile esterna.
Nel linguaggio C si possono definire anche variabili esterne, sono variabili accessibili e modificabili da ogni funzione del programma.
Come definire una variabile esterna in C
Per definire una variabile esterna o globale devo dichiarare la variabile all'inizio del codice sorgente, prima della funzione main() e di ogni altra funzione del programma.
Un esempio pratico
In questo programma ho dichiarato una variabile di tipo carattere chiamata focus alla riga 2.
- #include <stdio.h>
- char focus = 'A';
- void funzione() {
- printf("La funzione() stampa %c \n", focus);
- }
- int main()
- {
- printf("La main() stampa %c \n", focus);
- funzione();
- return 0;
- }
La variabile focus si trova al di fuori della funzione main() e di ogni altra funzione. Pertanto, è una variabile esterna.
Sia la main() che la funzione() accedono al contenuto della variabile sia in lettura che in scrittura.
L'output del programma è
La main() stampa A
La funzione() stampa A
Entrambe le funzioni accedono alla variabile esterna e la stampano.
Eventualmente possono anche modificarla.
Nota. La prima ad accedere è la funzione main() perché viene eseguita automaticamente quando lancio il programma. L'altra funzione viene invocata dalla main, quindi è la seconda ad accedere alla variabile globale.
E così via.