Variabile locale
O variabilă locală este declarată în interiorul unui bloc de instrucțiuni și este vizibilă numai în acel bloc.
Spre deosebire de variabilele globale, care se văd peste tot, variabilele locale „trăiesc” doar în blocul în care au fost declarate, adică între acoladele care îl delimitează. Sunt create atunci când execuția intră în acel bloc și sunt șterse din memorie când se iese din el.
Caracteristici
- sunt vizibile doar în blocul în care au fost declarate;
- au prioritate față de o variabilă globală cu același nume;
- nu sunt inițializate automat: o variabilă locală neinițializată conține o valoare reziduală, imprevizibilă;
- nu pot exista două variabile locale cu același nume în același bloc.
Vizibilitatea în blocuri
Un bloc poate conține alte blocuri (de exemplu o buclă while în interiorul unei funcții). O variabilă declarată într-un bloc interior nu este vizibilă în blocurile exterioare, dar este vizibilă în cele descendente.
void exemplu() {
int a; // vizibil in toata functia exemplu
while (a > 0) {
int b; // vizibil doar in interiorul lui while
// aici se vad atat a, cat si b
}
// aici se vede doar a, nu si b
}
Prioritatea față de variabilele globale
Dacă o variabilă locală are același nume ca una globală, în interiorul blocului ei se folosește varianta locală:
int x = 1; // global
void subprogram() {
int x = 2; // local, ascunde temporar x-ul global
cout << x; // afiseaza 2
}
Tocmai pentru că nu sunt inițializate automat, este o greșeală frecventă să folosim o variabilă locală înainte de a-i da o valoare. Rezultatul ar fi imprevizibil, pentru că variabila conține „restul” rămas în acea zonă de memorie.