Zmienna lokalna – zmienna zdefiniowana i dostępna wyłącznie w określonym bloku programu, tworzona w momencie wejścia do tego bloku oraz usuwana z pamięci w momencie wyjścia z danego bloku. Tym samym zasięg zmiennej lokalnej oraz czas jej życia pokrywają się i obejmują blok, w którym zmienna lokalna jest zdefiniowana. Zmienna lokalna ma więc określony, ograniczony zakres istnienia i dostępności.
To w jakich blokach programowych można tworzyć zmienne lokalne definiuje składnia konkretnego języka programowania. Typowymi blokami, w których można w różnych językach programowania tworzyć zmienne lokalne, są moduły, podprogramy oraz w pewnych językach programowania także instrukcje blokowe (lub inne instrukcje strukturalne, np. pętla for w języku C i inne).
Zmienna lokalna w danym bloku przesłania zdefiniowaną zmienną globalną lub zmienną lokalną z bloku nadrzędnego o tym samym identyfikatorze. Tym samym programista nie może wprost, za pomocą danego identyfikatora, w bloku o zdefiniowanej zmiennej lokalnej, odwołać się do zmiennej zewnętrznej o tym samym identyfikatorze co zdefiniowana zmienna lokalna, choć może to zrobić za pomocą innych konstrukcji, jeżeli są dostępne w danym języku programowania, np. selekcja, wskaźnik, przemianowanie, nakładanie zmiennych lub inne.
Przykłady deklaracji zmiennych lokalnych C, C++ int func(int x) { /* zmienna lokalna w podprogramie */ int y; ...
/* zmienna lokalna w instrukcji blokowej */ int z; ...
Pascal function func(x: integer): integer; {zmienna lokalna w podprogramie} var y: integer; begin ... begin { brak możliwości deklaracji zmiennej lokalnej w instrukcji grupującej } ... end end;
PL/I func: PROC(X) RETURNS(FIXED(5,0)); DCL X FIXED(5,0); /* zmienna lokalna w podprogramie */ DCL Y FIXED(5,0); ... BEGIN /* zmienna lokalna w instrukcji blokowej */ DCL Z FIXED(5,0); ... END; END func;
Porównanie z innymi rodzajami zmiennych Jak wyżej zaznaczono zmienna lokalna tworzona jest przy wejściu do bloku i usuwana wraz z wyjściem z bloku. W bloku takim mogą być także tworzone zmienne statyczne. Różnica pomiędzy takimi zmiennymi a zmiennymi lokalnymi jest taka, że zmienne statyczne nie są usuwane z pamięci przy wyjściu z bloku tak jak to ma miejsce w odniesieniu do zmiennych lokalnych, ale przechowują aktualną wartość do następnego wejścia do bloku (mimo że są niedostępne w bloku zewnętrznym, tak jak zmienne lokalne). Oznacza to, że jeżeli w danym bloku zdefiniowane będą dwie zmienne: jedna lokalna, a druga statyczna, i zostaną one zainicjowane w ich definicjach, to przypisanie wartości inicjującej do zmiennej lokalnej nastąpi za każdym razem przy wejściu do danego bloku, a do zmiennej statycznej tylko raz przy pierwszym wejściu do danego bloku.
+ Porównanie zmiennej lokalnej, statycznej i globalnej w języku język C, C++ element zmienna lokalna zmienna statyczna zmienna globalna kod źródłowy#include "stdio.h" int x; int plus(int liczba) { int x=10; x=x+liczba; printf("Wynik: %d\n",x); return x; } int main() { x=1; /* bez znaczenia */ x=plus(1); x=plus(2); x=plus(3); return 0; }#include "stdio.h" int x; int plus(int liczba) { static int x=10; x=x+liczba; printf("Wynik: %d\n",x); return x; } int main() { x=1; /* bez znaczenia */ x=plus(1); x=plus(2); x=plus(3); return 0; }#include "stdio.h" int x; int plus(int liczba) { /* brak zmiennej lokalnej */ x=x+liczba; printf("Wynik: %d\n",x); return x; } int main() { x=1; x=plus(1); x=plus(2); x=plus(3); return 0; } wyniki wyprowadzone na konsolęWynik: 11 Wynik: 12 Wynik: 13Wynik: 11 Wynik: 13 Wynik: 16Wynik: 2 Wynik: 4 Wynik: 7
Zmienne lokalne w językach programowania + Zmienne lokalne w językach programowania Język programowania moduł podprogram instrukcja blokowa inne Basic (wersje pierwotne) C, C++ pętla for Pascal PL/I Turbo Pascal
Przypisy
Bibliografia
Kategoria:Zmienna (informatyka)