Rozdíl mezi lokální a globální proměnnou
Klíčové rozdíly mezi lokální proměnnou a globální proměnnou
- Lokální proměnná je deklarována uvnitř funkce, zatímco globální proměnná je deklarována mimo funkci.
- Lokální proměnné jsou vytvořeny, když funkce zahájila provádění a jsou ztraceny, když funkce končí, na druhé straně je globální proměnná vytvořena při zahájení provádění a je ztracena, když program skončí.
- Lokální proměnná neposkytuje sdílení dat, zatímco globální proměnná poskytuje sdílení dat.
- Lokální proměnné jsou uloženy v zásobníku, zatímco globální proměnná je uložena na pevném místě určeném kompilátorem.
- Předávání parametrů je vyžadováno pro lokální proměnné, zatímco pro globální proměnné není nutné
Co je proměnná?
Proměnná je název přiřazený oblasti úložiště, se kterou může program manipulovat. Typ proměnné určuje velikost a rozložení paměti proměnné.
Určuje také rozsah hodnot, které je třeba v této paměti uložit, a povahu operací, které lze s touto proměnnou použít.
Rozsah proměnných
Rozsah proměnné je jednoduše životnost proměnné. Je to blok kódu, pod kterým je proměnná použitelná nebo živá. Například:
function foo(){ var x; }
Deklarujete proměnnou „x“ uvnitř funkce „foo“. Rozsah této proměnné zůstává uvnitř této funkce a nemůže být použit mimo tuto funkci.
Existují tři místa, kde můžete proměnné deklarovat proměnný programovací jazyk:
- Uvnitř funkce nebo bloku: Lokální proměnné
- Mimo všechny funkce: Globální proměnné
- V definici parametrů funkce: Formální parametry
Místní proměnná
Místní proměnná je definován jako typ proměnné deklarované v rámci programovacího bloku nebo podprogramů. Může být použit pouze uvnitř podprogramu nebo bloku kódu, ve kterém je deklarován. Lokální proměnná existuje, dokud není blok funkce spuštěn. Poté bude automaticky zničen.
Příklad lokální proměnné
public int add(){ int a =4; int b=5; return a+b; }
Zde jsou „a“ a „b“ lokální proměnné
Globální proměnná
A Globální proměnná v programu je proměnná definovaná mimo podprogram nebo funkci. Má globální rozsah, což znamená, že si drží svou hodnotu po celou dobu životnosti programu. Proto k němu lze přistupovat v rámci programu jakoukoli funkcí definovanou v programu, pokud není zastíněna.
Příklad:
int a =4; int b=5; public int add(){ return a+b; }
Zde jsou „a“ a „b“ globální proměnné.
Místní proměnná vs globální proměnné
Zde jsou některé zásadní rozdíly mezi lokálními a globálními proměnnými.
Parametr | Místní | Globální |
---|---|---|
Rozsah | Je deklarován uvnitř funkce. | Je deklarován mimo funkci. |
Hodnota | Pokud není inicializována, uloží se nesmyslná hodnota | Pokud není inicializován, je jako výchozí uložena nula. |
Život | Vytvoří se, když se funkce spustí, a ztratí se, když funkce skončí. | Vytvoří se před zahájením globálního provádění programu a ztratí se při ukončení programu. |
Sdílení dat | Sdílení dat není možné, protože k datům lokální proměnné lze přistupovat pouze jednou funkcí. | Sdílení dat je možné, protože více funkcí má přístup ke stejné globální proměnné. |
parametry | Předání parametrů je vyžadováno, aby místní proměnné měly přístup k hodnotě v jiné funkci | Předávání parametrů není u globální proměnné nutné, protože je viditelné v celém programu |
Úprava hodnoty proměnné | Když je hodnota lokální proměnné upravena v jedné funkci, změny nejsou viditelné v jiné funkci. | Při změně hodnoty globální proměnné v jedné funkci jsou změny viditelné ve zbytku programu. |
Přístup: | K lokálním proměnným lze přistupovat pomocí příkazů uvnitř funkce, ve které jsou deklarovány. | Ke globálním proměnným můžete přistupovat libovolným příkazem v programu. |
Úložiště paměti | Pokud není uvedeno jinak, je uložen ve stohu. | Je uložen na pevném místě, o kterém rozhodl kompilátor. |
Výhody použití globálních proměnných
- Ke globální proměnné můžete přistupovat ze všech funkcí nebo modulů v programu
- Globální proměnnou potřebujete deklarovat pouze jednou mimo moduly.
- Je ideální pro ukládání „konstant“, protože vám pomáhá udržet konzistenci.
- Globální proměnná je užitečná, když více funkcí přistupuje ke stejným datům.
Výhody použití lokálních proměnných
- Použití lokálních proměnných nabízí záruku, že hodnoty proměnných zůstanou při běhu úlohy nedotčené
- Pokud několik úloh změní jednu proměnnou, která běží současně, může být výsledek nepředvídatelný. Ale deklarace jako lokální proměnná tento problém řeší, protože každá úloha vytvoří svou vlastní instanci lokální proměnné.
- Místním proměnným můžete dát stejný název v různých funkcích, protože je rozpoznává pouze funkce, ve které jsou deklarovány.
- Lokální proměnné se vymažou, jakmile nějaká funkce skončí a uvolní místo v paměti, které zabírá.
Nevýhody použití globálních proměnných
- Příliš mnoho proměnných deklarovaných jako globální, pak zůstávají v paměti až do dokončení provádění programu. To může způsobit nedostatek paměti.
- Data lze upravovat libovolnou funkcí. Jakýkoli příkaz zapsaný v programu může změnit hodnotu globální proměnné. To může vést k nepředvídatelným výsledkům v multitaskingových prostředích.
- Pokud jsou globální proměnné přerušeny kvůli refaktorování kódu, budete muset změnit všechny moduly, kde jsou volány.
Nevýhody použití lokálních proměnných
- Proces ladění lokální proměnné je poměrně složitý.
- Společná data je nutné předávat opakovaně, protože sdílení dat mezi moduly není možné.
- Mají velmi omezený rozsah.
Co je užitečnější?
Lokální a globální proměnná jsou stejně důležité při psaní programu v jakémkoli jazyce. Velké množství globální proměnné však může zabírat obrovskou paměť. Nežádoucí změna globálních proměnných je obtížně identifikovatelná. Proto je vhodné vyvarovat se deklarování nežádoucích globálních proměnných.