A programozásban a lokális változó egy kódblokkon belül deklarált változó . Egy lokális változó hatóköre a deklaráció pontján kezdődik és ennek a blokknak a végén ér véget [1] [2] . Például C -ben a függvényben vagy blokkban deklarált változók lokálisak (C-ben a blokkokat kapcsos zárójelek { és } választják el) [3] .
Vannak olyan programozási nyelvek, amelyekben egy lokális változót csak függvényben lehet deklarálni, mivel ezekben a nyelvekben a blokkban deklarált helyi változót ennek a blokknak a közvetlen helyének függvényében deklarálják.
A helyi változókat a legtöbb nyelven a hívási verem tárolja [4] . Ez azt jelenti, hogy ha egy függvény rekurzívan hívja meg magát, akkor a változókat minden alkalommal újra létrehozzák, és lefoglalják a személyes memóriát, ahelyett, hogy ugyanarra a helyre írnák őket.
A helyi változót csak az operációs rendszer vagy a számítógép által a verem számára lefoglalt memória mennyisége korlátozza.
Az algol-szerű nyelvek lehetővé teszik a blokkok tetszőleges nagy egymásba ágyazását, és mindegyiknek megvan a saját helyi változója.
A lokális változók lehetővé teszik a rekurziót [5] .
A lokális hatókör változóit a globális változóknál előforduló mellékhatások elkerülésére használják.
Az érték szerinti hívást használó programozási nyelvek minden szubrutinnak a helyi változók helyi hatókörét adják a neki átadott argumentumok helyi másolatával.
A lokális változó bármely függvényparaméter (például a C nyelvben), amely nem használ hivatkozásokat vagy mutatókat.
A statikus változók egy speciális típusú helyi változók, amelyek számos népszerű nyelven elérhetők (beleértve a c / c ++-t, a Visual Basic-et, a VB.NET-et), amelyek lényege, hogy ez a változó minden függvényhívásban megtartja értékét. És minden hívásban pontosan ugyanaz lesz, mint a függvény törzsének bezárásakor [6] előtt .
A Perlnek van egy kulcsszava locala változók „lokalizálására”, de ebben az esetben localez nem azt jelenti, amit a legtöbben várnának. [2] Korlátozott élettartamú, de a globális névtérben található ideiglenes változót hoz létre. Ez lehetővé teszi, hogy ezt a változót bármely, ebből a blokkból meghívott függvényben megtekinthesse. Lexikális változók létrehozásához, amelyek inkább automatikus változók, használja a my. Ennek megértéséhez vegye figyelembe a következő kódot:
$a = 1 ; sub f () { local $a ; $a = 2 ; g (); } sub g () { print "$a\n" ; } g (); f (); g ();Eredmény:
egy 2 egyez egy globális változónévvel történik, amely $aa függvényben létrehozott új ideiglenes változóra kezd mutatni f(), de a globális érték visszaáll a -ból való kilépéskor f(). Ha myebben az esetben helyette használjuk local, az 1-et ír ki háromszor, mivel ebben az esetben a változó $avalóban lokális lenne a függvényhez f(), és nem látható g(). Emiatt sokan úgy gondolják, hogy az operátornak localmás nevet kell adni, például save. [5]
A Rubyt mint nyelvet szintén a Perl ihlette, de ebben az esetben a jelölést egyszerűbbé tették: a globális változó neve előtt $ jelnek kell lennie, például $változó_neve, míg a lokális változónak egyszerűen nincs $ jel a neve előtt, például változó_neve (míg Perlben minden skalár érték előtt $ van).
Kiadja:
012