Proměnné se dále dělí na „lokální“ a „globální“ proměnnou, která je hlavním tématem naší diskuse. Hlavní rozdíl mezi lokální a globální proměnnou je, že lokální proměnná je deklarována uvnitř funkčního bloku, kde je globální proměnná deklarována mimo funkce v programu.
Podívejme se na některé další rozdíly mezi lokální a globální proměnnou spolu s srovnávací tabulkou.
Tabulka porovnání:
Základ pro porovnání | Místní proměnná | Globální proměnná |
---|---|---|
Prohlášení | Proměnné jsou deklarovány uvnitř funkce. | Proměnné jsou deklarovány mimo jakoukoliv funkci. |
Rozsah | V rámci funkce, uvnitř které jsou deklarovány. | V celém programu. |
Přístup | Přístup pouze pomocí prohlášení, uvnitř funkce, ve které jsou deklarovány. | Přístup k jakémukoli prohlášení v celém programu. |
Život | Vytvořeno, když je funkční blok zadán a zničen při výstupu. | Zůstaňte v platnosti po celou dobu provádění programu. |
Úložný prostor | Místní proměnné jsou uloženy v zásobníku, pokud není specifikováno. | Uloženo na pevném místě, o němž rozhodl překladač. |
Definice lokální proměnné
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 kódového bloku. V C ++ mohou být deklarovány kdekoli v bloku kódu před jejich použitím. K lokálním proměnným lze přistupovat pouze příkazy zapsanými uvnitř funkce, ve které jsou deklarovány lokální proměnné. Jsou bezpečné v určitém smyslu, že k nim nelze přistupovat žádnou jinou funkcí stejného programu.
Lokální proměnná existuje, dokud není blok funkce v provedení, a tím zničen po ukončení bloku. Místní proměnné ztratí svůj obsah, jakmile provedení opustí blok, ve kterém jsou deklarovány.
Důvodem je, že lokální proměnné jsou uloženy v zásobníku, pokud není specifikováno jejich speciální úložiště. Zásobník má dynamickou povahu a změna umístění paměti vede k tomu, proč místní proměnná nedrží jejich hodnotu, jakmile blok funkce existuje.
Poznámka:
Existuje však způsob, jak zachovat hodnotu místní proměnné pomocí „statického“ modifikátoru.
Definice globální proměnné
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 může být globální proměnná zpřístupněna libovolnou funkcí přítomnou v programu. Globální proměnné nejsou moc spolehlivé, protože jejich hodnota může být změněna libovolnou funkcí přítomnou v programu.
Globální proměnné zůstávají v platnosti až do úplného provedení celého programu. Globální proměnné si uchovávají své hodnoty, dokud není program spuštěn. Důvodem je, že jsou uloženy v pevné oblasti paměti, o které rozhodl překladač.
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 nechtěným změnám hodnoty globální proměnné.
Klíčový rozdíl mezi lokální a globální proměnnou.
- Místní proměnné se nazývají „lokální“, protože jsou známé pouze příkazům napsaným ve funkci, ve které jsou deklarovány a nejsou známy žádné jiné funkci, která se nachází mimo tento funkční blok. V případě globální proměnné jsou známé každé funkci přítomné v programu; proto se nazývají „globální“.
- Globální proměnné si uchová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 rozhodl překladač. Lokální proměnné jsou uloženy v zásobníku; proto si nezachovávají svou hodnotu jako „stack“ je dynamický, ale překladač může být nasměrován tak, aby si zachoval svou hodnotu pomocí „statického“ modifikátoru.
- Pokud je globální a lokální proměnná deklarována se stejným názvem, pak všechny příkazy bloku kódu, ve kterém je deklarována lokální proměnná, budou odkazovat pouze na lokální proměnnou a nebudou mít vliv na globální proměnnou.
- Lokální proměnná je zničena, když řízení programu skončí mimo blok, ve kterém je deklarována lokální proměnná. Globální proměnná je však zničena při ukončení celého programu.
Závěr:
Místní i globální proměnné jsou stejně nutné při psaní programu. Prohlášení velkého počtu globálních proměnných by však mohlo být problematické ve velkém programu, protože může způsobit nežádoucí změny globální proměnné; a bylo by těžké určit, která část programu tuto změnu provedla. Proto bychom se měli vyhnout deklaraci zbytečných globálních proměnných.