În programare, o variabilă locală este o variabilă declarată într- un bloc de cod. Sfera unei variabile locale începe în punctul declarației sale și se termină la sfârșitul acestui bloc [1] [2] . De exemplu, în C , variabilele declarate în interiorul unei funcții sau bloc sunt locale (în C, blocurile sunt delimitate prin acolade { și }) [3] .
Există limbaje de programare în care o variabilă locală poate fi declarată doar într-o funcție, deoarece în aceste limbi o variabilă locală declarată într-un bloc este declarată în funcție de locația imediată a acestui bloc.
Variabilele locale sunt stocate pe stiva de apeluri în majoritatea limbilor [4] . Aceasta înseamnă că, dacă o funcție se autoinvocă recursiv, atunci variabilele sunt recreate de fiecare dată și li se alocă memorie personală, în loc să fie scrise în același loc.
O variabilă locală este limitată doar de cantitatea de memorie alocată de sistemul de operare sau computer pentru stivă.
Limbile similare Algol vă permit să aranjați imbricarea de blocuri arbitrar de mare și fiecare va avea propriile variabile locale.
Variabilele locale fac posibilă recursiunea [5] .
Variabilele locale sunt utilizate pentru a evita problemele cu efecte secundare care pot apărea cu variabilele globale.
Limbajele de programare care folosesc apelul după valoare oferă fiecărei subrutine un domeniu local de variabile locale cu o copie locală a argumentelor transmise acesteia.
O variabilă locală este orice parametru de funcție (de exemplu, în limbajul C) care nu utilizează referințe sau pointeri.
Variabilele statice sunt un tip special de variabile locale disponibile în multe limbi populare (inclusiv c/c++, Visual Basic, VB.NET), a căror esență este că această variabilă își păstrează valoarea în fiecare apel de funcție. Și în fiecare apel, va fi exact la fel ca la închiderea corpului acestei funcții înainte de [6] .
Perl are un cuvânt cheie, local, pentru „localizarea” variabilelor, dar în acest caz, localnu înseamnă ceea ce majoritatea oamenilor s-ar aștepta să însemne. [2] Creează o variabilă temporară cu o durată de viață limitată, dar situată în spațiul de nume global. Acest lucru vă permite să vedeți această variabilă în orice funcție numită din acest bloc. Pentru a crea variabile lexicale, care sunt mai mult ca variabile automate, utilizați my. Pentru a înțelege cum funcționează, luați în considerare următorul cod:
$a = 1 ; sub f () { local $a ; $a = 2 ; g (); } sub g () { print "$a\n" ; } g (); f (); g ();Rezultat:
unu 2 unuacest lucru se întâmplă cu un nume de variabilă globală $acare începe să indice o nouă variabilă temporară creată în funcție f(), dar valoarea globală este restabilită la ieșirea din f(). Utilizarea myîn acest caz localar fi tipărită 1 de trei ori, deoarece în acest caz variabila $aar fi într-adevăr locală funcției f()și nu ar fi văzută g(). Din acest motiv, mulți cred că operatorul localar trebui să aibă un alt nume, cum ar fi save. [5]
Ruby ca limbaj a fost inspirat și de Perl, dar în acest caz, notația a fost simplificată: numele unei variabile globale trebuie să fie precedat de un semn $, de exemplu, $variable_name, în timp ce o variabilă locală pur și simplu nu are un Semnul $ în fața numelui său, de exemplu, nume_variabilă (în timp ce în Perl toate valorile scalare au un $ în față).
Va emite:
012