Area di visibilità.
Variabili, costanti e altri tipi di dati (struct ed enumerazioni) hanno un concetto così importante come l'ambito.
Una variabile globale viene dichiarata al di fuori delle funzioni ed è disponibile per la lettura e la scrittura in qualsiasi punto del programma, in qualsiasi sua funzione.
byte var; // variabile globale
- Globale
- Locale
- Formale (opzione)
Una variabile globale viene dichiarata al di fuori delle funzioni ed è disponibile per la lettura e la scrittura in qualsiasi punto del programma, in qualsiasi sua funzione.
byte var; // variabile globale
void setup()
{
// cambia il valore della variabile globale
var = 5;
}
void loop()
{
// cambia il valore della variabile globale
var = 7;
}
Locale.
Una variabile locale risiede all'interno di una funzione o all'interno di qualsiasi blocco di codice racchiuso tra { parentesi graffe } ed è leggibile e scrivibile solo al suo interno. Se provi ad accedere a una variabile locale da un'altra funzione (al di fuori del suo { blocco } ), riceverai un errore perché la variabile locale viene ricreata quando viene eseguito il blocco di codice (o funzione) che la contiene e viene rimossa dalla memoria quando l'esecuzione di questo blocco (o funzione) termina:
void setup()
Locale.
Una variabile locale risiede all'interno di una funzione o all'interno di qualsiasi blocco di codice racchiuso tra { parentesi graffe } ed è leggibile e scrivibile solo al suo interno. Se provi ad accedere a una variabile locale da un'altra funzione (al di fuori del suo { blocco } ), riceverai un errore perché la variabile locale viene ricreata quando viene eseguito il blocco di codice (o funzione) che la contiene e viene rimossa dalla memoria quando l'esecuzione di questo blocco (o funzione) termina:
void setup()
{
byte var; // variabile locale per l'installazione
// cambia il valore della variabile locale
var = 5;
}
void loop()
{
// risulterà in un errore perché var non è dichiarato in questo blocco di codice
var=7;
// crea qui un blocco di codice separato
{
byte var2 = 7;
// var2 esiste solo all'interno di questo blocco!
}
// qui var2 verrà rimosso dalla memoria
}
Un punto importante: se il nome di una variabile locale corrisponde a quello globale, allora la priorità di chiamare per nome nella funzione è data alla variabile locale:
byte var; // creare una variabile globale var
void setup()
{
byte var; // creare una variabile locale var
// cambia variabile locale var
var = 5;
}
void loop()
{
// e qui cambia la variabile globale var!
var = 7;
}
Formale (opzione).
Una variabile formale, che è anche un parametro passato a una funzione, si comporta come una normale variabile locale, ma appare in condizioni leggermente diverse: quando la funzione viene chiamata. Questa variabile può essere letta e modificata all'interno della sua funzione.
void setup()
Una variabile formale, che è anche un parametro passato a una funzione, si comporta come una normale variabile locale, ma appare in condizioni leggermente diverse: quando la funzione viene chiamata. Questa variabile può essere letta e modificata all'interno della sua funzione.
void setup()
{
// passiamo 5 come argomento
myFunc(5);
}
void loop()
{
}
void myFunc(byte var)
{
// qui var è una variabile locale
// aggiungi 7 ad esso
var += 7; // dopo parentesi graffi la variabile verrà rimossa dalla memoria!
}