Chiarimento funzioni

Buonasera, ho iniziato ad creare dei programmini con Arduino.

So che una volta chiamata una funzione, le variabili che vivono solo nella funzione quando si ritorna nel main() vengono cancellate)
Prima mi sono messo a fare un progetto base discusso in una guida trovata in internet; leggendo il codice mi sono accorto di un fatto che al momento ho ritenuto un errore, poi però testando il progetto ho visto che funzionava:
Il codice è questo:

byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
int ledDelay(65); // delay between changes
int direction = 1;
int currentLED = 0;
unsigned long changeTime;
void setup() {
// set all pins to output
for (int x=0; x<10; x++) {
pinMode(ledPin[x], OUTPUT); }
changeTime = millis();
}
void loop() {
// if it has been ledDelay ms since last change
if ((millis() - changeTime) > ledDelay) {
changeLED();
changeTime = millis();
}
}
void changeLED() {
// turn off all LED's
for (int x=0; x<10; x++) {
digitalWrite(ledPin[x], LOW);
}
// turn on the current LED
digitalWrite(ledPin[currentLED], HIGH);
// increment by the direction value
currentLED += direction;
// change direction if we reach the end
if (currentLED == 9) {direction = -1;}
if (currentLED == 0) {direction = 1;}
}

Il mio dubbio è quella variabile currentLED nella funzione; come mai una volta uscito dalla funzione il suo valore rimane "vivo"? cioè non si cancella come avrei pensato io? Fore non ho capito bene come "lavora" il linguaggio di arduino.

Spero di essermi spiegato, grazie.

EDIT
Credo di aver risolto, mi sono dato una rinfrescata di teoria; con Arduino, quando definiamo le variabili all'inizio, esse hanno una visibilità globale, quindi ogni funzione può modificarle, avevo fatto confusione con le variabili locali nelle funzioni. (chiedo a moderatori se è possibile cancellare tutto):

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento se non lo hai già fatto: Regolamento
Qui una serie di link utili, non inerenti al tuo problema:

Ciao linofex
Non cancelliamo delle discussioni perché potrebbero essere d'aiuto ad altri che hanno lo stesso problema.

Se una variabile viene definita fuori dalle funzioni esiste in tutte le funzioni.
Se una variabile viene definita in una funzione esiste solo in quella funzione.

Una variabile locale puó avere lo stesso nome di una variabile globale. In questo caso nella funzione dove viene definita la variabile esiste la versione locale e nelle altre funzioni esiste quella globale che sono due variabili differenti.

Possono essere definite due variabili con lo stesso nome in 2 funzioni. In questo caso le due variabili sono diverse e ciascuna esiste solo nella sua funzione.

Ciao Uwe