Rozdíl mezi místní a globální proměnnou

Autor: Laura McKinney
Datum Vytvoření: 1 Duben 2021
Datum Aktualizace: 5 Smět 2024
Anonim
Rozdíl mezi místní a globální proměnnou - Technologie
Rozdíl mezi místní a globální proměnnou - Technologie

Obsah


Jak jsme již diskutovali dříve, proměnná je jméno dané umístění v paměti a musí být deklarováno před použitím. V C jsou všechny proměnné deklarovány na začátku programu. V C ++ mohou být proměnné deklarovány kdykoli předtím, než jsou použity v pokynech.

Proměnné jsou klasifikovány jako „lokální“ a „globální“ proměnná, což je hlavní téma naší diskuse. Zde je hlavní rozdíl mezi lokální a globální proměnnou v tom, že lokální proměnná je deklarována uvnitř funkčního bloku. Naproti tomu globální proměnná je deklarována mimo funkce v programu.

Podívejme se na další rozdíly mezi místní a globální proměnnou spolu s srovnávacím grafem.

  1. Srovnávací tabulka
  2. Definice
  3. Klíčové rozdíly
  4. Výhody
  5. Nevýhody
  6. Závěr

Srovnávací tabulka:

ZÁKLAD PRO POROVNÁNÍ MÍSTNÍ Proměnná GLOBÁLNÍ variabilní
Prohlášení Proměnné jsou deklarovány uvnitř funkce.
Proměnné jsou deklarovány mimo jakoukoli funkci.
Rozsah
V rámci funkce, v níž jsou deklarovány.V celém programu.
Hodnota
Neinicializovaná lokální proměnná má za následek uložení hodnoty odpadu.Neinicializovaná globální proměnná ve výchozím nastavení ukládá nulu.
Přístup Přístupné pouze pomocí příkazů, uvnitř funkce, ve které jsou deklarovány. Přístup k jakémukoli prohlášení v celém programu.
Sdílení datNení poskytovánoUsnadněno
ŽivotVytvořeno, když je funkční blok zadán a zničen při ukončení. Zůstaňte po celou dobu provádění programu.
Úložný prostor
Lokální proměnné se ukládají do zásobníku, pokud není uvedeno.
Uloženo na pevném místě, o kterém rozhodl překladač.
Předávání parametrůNutně nutnéNení požadováno pro globální proměnné.
Změny proměnné hodnotyJakákoli modifikace implikovaná v lokální proměnné neovlivní ostatní funkce programu.Změny použité v globální proměnné funkce odrážejí změny v celém programu.

Definice lokální proměnné

A lokální proměnná je vždy deklarována uvnitř funkčního bloku. V C je lokální proměnná deklarována na začátku bloku kódu. V C ++ mohou být deklarovány kdekoli v kódovém bloku před jejich použitím. K lokálním proměnným lze přistupovat pouze pomocí příkazů zapsaných uvnitř funkce, ve které jsou deklarovány lokální proměnné. Jsou v bezpečí v tom smyslu, že k nim nemá přístup žádná jiná funkce stejného programu.


Lokální proměnná existuje, dokud není blok funkce ve vykonání, a proto je zničen po ukončení opuštění bloku. Lokální proměnné ztratí svůj obsah, jakmile provádění opustí blok, ve kterém jsou deklarovány.

Důvodem je to, že lokální proměnné jsou uloženy v zásobníku, pokud není uvedeno jejich speciální úložiště. Zásobník je dynamické povahy a změna umístění paměti vede k důvodu, proč lokální proměnná neudrží svou hodnotu, jakmile blok funkce existuje.

Poznámka:
Existuje však způsob, jak zachovat hodnotu místní proměnné pomocí modifikátoru „statický“.

Definice globální proměnné

A globální proměnná je deklarována mimo všechny funkce přítomné v programu. Na rozdíl od lokálních proměnných je globální proměnná přístupná libovolnou funkcí přítomnou v programu. Globální proměnné nejsou příliš spolehlivé, protože jejich hodnotu lze změnit jakoukoli funkcí přítomnou v programu.


Zůstávají v platnosti, dokud nebude celý program proveden úplně. Globální proměnné si zachovají své hodnoty, dokud není program spuštěn. Důvod je ten, že jsou uloženy v pevné oblasti paměti, o které rozhoduje kompilátor.

Globální proměnná je užitečná v situacích, kdy ke stejným datům přistupuje více funkcí. Použití velkého počtu globálních proměnných může být problematické, protože může dojít k nežádoucím změnám hodnoty globální proměnné.

  1. Místní proměnné se nazývají „místní“, protože jsou známy pouze příkazům psaným ve funkci, uvnitř které jsou deklarovány, a nejsou známy žádné jiné funkci přítomné mimo tento funkční blok. V případě globální proměnné jsou známy každé funkci přítomné v programu; proto se nazývají „globální“.
  2. Globální proměnné si zachovávají svou hodnotu, dokud není program ve fázi provádění, protože jsou uloženy na pevném místě, o kterém rozhodne kompilátor. Lokální proměnné jsou uloženy v zásobníku; proto si nezachovávají svou hodnotu, protože „stack“ je dynamický charakter, ale kompilátor může být nasměrován, aby si udržel svou hodnotu pomocí „statického“ modifikátoru.
  3. Pokud jsou globální a lokální proměnná deklarovány se stejným názvem, budou všechny příkazy bloku kódu, ve kterém je deklarována lokální proměnná, odkazovat pouze na lokální proměnnou a nebudou mít vliv na globální proměnnou.
  4. Lokální proměnná je zničena, když je kontrola programu ukončena z bloku, ve kterém je deklarována lokální proměnná. Po ukončení celého programu je však globální proměnná zničena.

Výhody

Místní proměnná

  • Hlavní výhodou lokální proměnné je, že nedochází k náhodným změnám dat. Proměnná je deklarována uvnitř bloku a tento blok kódu používá proměnnou a zabraňuje nežádoucím vedlejším účinkům.
  • Lokální proměnná spotřebovává paměť po omezenou dobu, pouze pokud je spuštěn blok obsahující proměnnou.

Globální proměnná

  • Globální proměnné jsou velmi užitečné, když pracujete s několika funkcemi v programu, které manipulují se stejnými daty.
  • Změny, které je třeba použít v celém programu, by byly jednodušší implementací globální proměnné.
  • Můžeme získat přístup odkudkoli nebo prostřednictvím libovolné náhodné funkce programu.

Nevýhody

Místní proměnná

  • Rozsah lokální proměnné je omezen.
  • Zakazuje sdílení dat.
  • Nejsou schopni uchovat data mezi hovory, protože místní proměnné jsou generovány a odstraňovány s každým vstupem a výstupem z bloku. Statický modifikátor však lze použít k zachování hodnot.

Globální proměnná

  • Použití velkého počtu globálních proměnných by mohlo vést ke generování programových chyb.
  • Hlavním problémem, který způsobuje, je náhodný výskyt změn v důsledku šířených globálních proměnných v celém programu.
  • Mohlo by to také zvýšit potřebu provádět refaktoring kódu, což je velmi rozsáhlý proces, ve kterém dochází k restrukturalizaci celého programového kódu.

Závěr:

Místní i globální proměnné jsou při psaní programu nezbytné a stejně nutné. Deklarace velkého počtu globálních proměnných by však mohla být v masivním programu problematická, protože by to mohlo způsobit nežádoucí změny globální proměnné; a bylo by obtížné určit, která část programu tuto změnu provedla. Proto by se člověk neměl vyhýbat deklarování zbytečných globálních proměnných.