Automatická proměnná - Automatic variable

V počítačovém programování je automatická proměnná lokální proměnná, která se přiděluje a uvolňuje automaticky, když tok programu vstoupí a opustí rozsah proměnné. Rozsah je lexikální kontext, zejména funkce nebo blok, ve kterém je proměnná definována. Místní data jsou obvykle (ve většině jazyků) neviditelná mimo funkční nebo lexikální kontext, kde jsou definována. Místní data jsou také neviditelná a nepřístupná pro volanou funkci, ale nejsou uvolněna, vracejí se zpět do rozsahu, když se vlákno provádění vrátí volajícímu.

Automatické místní proměnné se primárně vztahují na rekurzivní jazyky s lexikálním rozsahem . Automatické místní proměnné jsou obvykle přidělovány v rámci zásobníku procedury, ve které jsou deklarovány. To bylo původně provedeno, aby se dosáhlo opětovného vstupu a umožnění rekurze , což je úvaha, která platí dodnes. Koncept automatických proměnných v rekurzivních (a vnořených ) funkcích v jazyce s lexikálním rozsahem byl představen širšímu publiku s ALGOL na konci 50. let a dále popularizován jeho mnoha potomky.

Termín lokální proměnná je obvykle synonymem automatické proměnné, protože v mnoha programovacích jazycích jde o totéž, ale lokální je obecnější - většina lokálních proměnných jsou automatické lokální proměnné, ale existují i statické lokální proměnné , zejména v jazyce C. lokální proměnná, alokace je statická (životnost je celé provedení programu), není automatická, ale má rozsah pouze během provádění funkce.

Ve specifických programovacích jazycích

C, C ++

(Nazývá se automatické proměnné.)

Všechny proměnné deklarované v rámci bloku kódu jsou ve výchozím nastavení automatické. Neinicializovaná automatická proměnná má nedefinovanou hodnotu, dokud jí nebude přiřazena platná hodnota jejího typu.

V jazyce C je použití třídy úložiště register nápovědou kompilátoru pro ukládání do mezipaměti proměnné v registru procesoru. Kromě toho, že neumožňuje použití odkazujícího operátoru ( & ) na proměnnou nebo na kteroukoli z jejích dílčích komponent, může kompilátor nápovědu ignorovat.

V C ++ se konstruktor automatických proměnných volá, když provádění dosáhne místa deklarace. Destruktor je volán, když dosáhne konce daného programového bloku (programové bloky jsou obklopeny složenými závorkami). Tato funkce se často používá ke správě alokace prostředků a uvolnění, jako je otevírání a následné automatické zavírání souborů nebo uvolňování paměti. Viz Získávání zdrojů je inicializace (RAII). Poznámka: C ++ 11 má nový auto specifikátor, který se liší. V tomto případě je odvozen typ proměnné .

Jáva

(Volané místní proměnné .)

Podobně jako C a C ++, ale neexistuje žádné klíčové slovo auto nebo register . Kompilátor Java však neumožňuje použití neexplicitně inicializované místní proměnné a dá chybu kompilace (na rozdíl od C a C ++, kde kompilátor obvykle poskytne pouze varování). Standard Java vyžaduje, aby byla každá místní proměnná před použitím explicitně inicializována. To se liší od proměnných instance, které jsou implicitně inicializovány výchozími hodnotami (které jsou 0 pro čísla a nula pro objekty).

Perl

(Volané lexikální , moje nebo soukromé proměnné.)

V Perlu jsou lokální proměnné deklarovány pomocí my operátoru. Neinicializované skaláry budou mít hodnotu undef ; neinicializovaná pole nebo hash budou () .

Perl má také local operátor, který nevytváří automatické proměnné, místo toho dává globálním (balíčkovým) proměnným dočasnou hodnotu, která je dynamicky vymezena na ohraničující blok. Když je rozsah proměnné ponechán, obnoví se stará hodnota.

Viz také

Poznámky

Reference