Lokální proměnná

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 20. února 2016; kontroly vyžadují 13 úprav .

V programování je lokální proměnná proměnná deklarovaná v bloku kódu. Rozsah lokální proměnné začíná v místě její deklarace a končí na konci tohoto bloku [1] [2] . Například v C jsou proměnné deklarované uvnitř funkce nebo bloku lokální (v C jsou bloky odděleny složenými závorkami { a }) [3] .

Existují programovací jazyky, ve kterých lze lokální proměnnou deklarovat pouze ve funkci, protože v těchto jazycích je lokální proměnná deklarovaná v bloku deklarována ve funkci okamžitého umístění tohoto bloku.

Organizace v paměti

Lokální proměnné jsou ve většině jazyků uloženy v zásobníku volání [4] . To znamená, že pokud se funkce volá rekurzivně, pak se proměnné pokaždé znovu vytvoří a přidělí osobní paměť, místo aby byly zapsány na stejné místo.

Omezení

Lokální proměnná je omezena pouze množstvím paměti přidělené operačním systémem nebo počítačem pro zásobník.

Jazyky podobné algolu vám umožňují uspořádat libovolně velké vnoření bloků a každý bude mít své vlastní lokální proměnné.

Rozsah

Lokální proměnné umožňují rekurzi [5] .

Proměnné lokálního rozsahu se používají, aby se předešlo problémům s vedlejšími efekty, ke kterým může dojít u globálních proměnných.

Programovací jazyky, které používají volání podle hodnoty, dávají každému podprogramu místní rozsah lokálních proměnných s lokální kopií argumentů, které mu byly předány.

Lokální proměnná je jakýkoli parametr funkce (například v jazyce C), který nepoužívá odkazy nebo ukazatele.

Statické lokální proměnné

Statické proměnné jsou speciálním typem lokálních proměnných dostupných v mnoha populárních jazycích (včetně c / c ++, Visual Basic, VB.NET), jejichž podstatou je, že tato proměnná si zachovává svou hodnotu při každém volání funkce. A v každém volání to bude úplně stejné, jako tomu bylo při zavření těla této funkce předtím [6] .

localv Perlu

Perl má klíčové slovo , localpro "lokalizaci" proměnných, ale v tomto případě localto neznamená to, co by většina lidí očekávala. [2] Vytváří dočasnou proměnnou s omezenou životností, ale umístěnou v globálním jmenném prostoru. To vám umožní vidět tuto proměnnou v jakékoli funkci volané z tohoto bloku. Chcete-li vytvořit lexikální proměnné, které jsou spíše automatickými proměnnými, použijte my. Chcete-li pochopit, jak to funguje, zvažte následující kód:

$a = 1 ; sub f () { local $a ; $a = 2 ; g (); } sub g () { print "$a\n" ; } g (); f (); g ();

Výsledek:

jeden 2 jeden

k tomu dochází u názvu globální proměnné $a, který začíná ukazovat na novou dočasnou proměnnou vytvořenou ve funkci f(), ale globální hodnota se obnoví při ukončení funkce f(). Použití myv tomto případě localby místo toho vytisklo 1 třikrát, protože v takovém případě by proměnná $askutečně byla pro funkci lokální f()a nebyla by vidět g(). Z tohoto důvodu se mnozí domnívají, že operátor localby měl mít jiné jméno, jako například save. [5]

Lokální proměnné v Ruby

Ruby jako jazyk byl také inspirován Perlem, ale v tomto případě byl zápis jednodušší: před jménem globální proměnné musí být znak $, například $název_proměnné, zatímco lokální proměnná prostě nemá Znak $ před jeho jménem, ​​například název_proměnné (v Perlu mají všechny skalární hodnoty na začátku $).

Příklad použití lokálních proměnných v C

#include <stdio.h> int a = 0 ; // globální proměnná int main () { printf ( "%d" , a ); // zobrazí se číslo 0 { int a = 1 ; // lokální proměnná a je deklarována, globální proměnná a není viditelná printf ( "%d" , a ); // zobrazí se číslo 1 { int a = 2 ; // stále lokální proměnná v bloku, globální proměnná a není viditelná a předchozí lokální proměnná není viditelná printf ( "%d" , a ); // zobrazí se číslo 2 } } }

Vydá:

012

Poznámky

  1. Místní proměnné . Datum přístupu: 26. února 2013. Archivováno z originálu 4. srpna 2013.
  2. Příklad 22-8. Rozsah lokálních proměnných . Získáno 26. února 2013. Archivováno z originálu 16. února 2013.
  3. Alfred Aho, Monica Lam, Ravi Seti, Jeffrey Ullman. 1.6.3 Statický rozsah a bloková struktura // Kompilátory : Principy, techniky a nástroje. - 2. vyd. - Williams, 2008. - S.  62 . — 1184 s. - ISBN 978-5-8459-1349-4 .
  4. Místní proměnné . - "Ve výchozím nastavení jsou místní proměnné uloženy v zásobníku." Datum přístupu: 26. února 2013. Archivováno z originálu 4. srpna 2013.
  5. 22.2.1. Lokální proměnné umožňují rekurzi. . Získáno 26. února 2013. Archivováno z originálu 16. února 2013.
  6. Statické proměnné (downlink) . Datum přístupu: 26. února 2013. Archivováno z originálu 30. ledna 2013.