Menu
Coddy logo textTech

Ambito delle variabili

Lezione 5 di 17 del corso Funzioni in C di Coddy.

Ogni variabile ha un ambito, cioè la parte del programma in cui puoi usarla. Le variabili possono essere globali o locali.

Variabili locali

Le variabili locali vengono create all'interno di un blocco di codice, ad esempio in una funzione, e esistono solo al suo interno. La memoria per queste variabili viene allocata quando il blocco inizia e deallocata quando il blocco termina, rimuovendo così le variabili.

#include <stdio.h>
void message() {
   char *msg = "Coddy";
   printf("%s \n", msg);
}
int main(void) {
   char *title = "tech";
   message();
   printf("%s \n", title);
   return 0;
}

Nella funzione message, viene definita la variabile msg. Analogamente, la funzione main definisce la variabile title. Queste variabili non sono disponibili al di fuori delle rispettive funzioni. Ad esempio, non possiamo usare la variabile msg nella funzione main perché il suo ambito è limitato alla funzione message.

Lo stesso principio si applica alle variabili definite all'interno di blocchi di codice annidati, come i cicli if, else, switch, case, for, while e do..while.

Variabili globali

Le variabili globali vengono definite nel file del programma al di fuori di tutte le funzioni. Queste variabili possono essere usate da qualsiasi funzione all'interno di quel file.

#include <stdio.h>
int a = 12;
void increment()
{
   a++;
   printf("a=%d \n", a);
}
int main(void)
{
   increment();          
   a++;
   printf("a=%d \n", a);    
    
   return 0;
}

L'output:

a=13 
a=14 

Qui, la variabile a è visibile a tutte le funzioni perché è dichiarata globalmente.

 

challenge icon

Sfida

Facile

Prova a usare la variabile globale:

  • Definisci una variabile globale chiamata <strong>gv</strong> al di fuori di qualsiasi funzione e assegnale il valore 20. 
  • Modifica la funzione increment per usare questa variabile globale. 
  • Scrivi una nuova funzione decrement che decrementi la variabile globale e ne stampi il valore. 
  • Stampa il valore della variabile nella funzione main.

L'output dovrebbe essere simile a questo:

Global variable after increment: 21 
Global variable after decrement: 20 
Global variable in main: 20 

Provalo tu

#include <stdio.h>

// Definisci una variabile globale chiamata gv e assegnale il valore 20


// Modifica la funzione increment
void increment() {
   
    printf("Global variable after increment: %d \n", gv);
}

// Definisci la funzione decrement


int main(void) {
    
    increment();
    decrement();
    // Stampa la variabile 
    
    return 0;
}

Tutte le lezioni di Funzioni in C

Esercitati da solo: Compilatore C online