Loading AI tools
Z Wikipedii, wolnej encyklopedii
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[1][2][3] 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.
int func(int x)
{
/* zmienna lokalna w podprogramie */
int y;
...
{
/* zmienna lokalna
w instrukcji blokowej */
int z;
...
}
}
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;
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;
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.
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: 11 |
Wynik: 2 |
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.