Premenné sa ďalej klasifikujú do "miestnych" a "globálnych" premenných, čo je hlavnou témou našej diskusie. Hlavným rozdielom medzi lokálnou a globálnou premennou je to, že lokálna premenná je deklarovaná vo funkčnom bloku, kde ako globálna premenná je deklarovaná mimo funkcií v programe.
Pozrime sa na ďalšie rozdiely medzi miestnou a globálnou premennou spolu s porovnávacou tabuľkou.
Porovnávacia tabuľka:
Základ pre porovnanie | Miestna premenná | Globálna premenná |
---|---|---|
vyhlásenie | Premenné sú deklarované vo funkcii. | Premenné sú deklarované mimo akúkoľvek funkciu. |
Rozsah | V rámci funkcie, v rámci ktorej sú deklarované. | V celom programe. |
prístup | Prístupné iba vo vyhláseniach, vo funkcii, v ktorej sú deklarované. | Prístup k akémukoľvek vyhláseniu v celom programe. |
život | Vytvorený, keď je funkčný blok zadaný a zničený pri výstupe. | Zostávajte v existencii po celú dobu vykonávania programu. |
skladovanie | Miestne premenné sú uložené v zásobníku, pokiaľ nie je uvedené. | Uložené na pevnom mieste, o ktorom rozhodol kompilátor. |
Definícia lokálnej premennej
Lokálna premenná sa vždy deklaruje vo funkčnom bloku. V C sa na začiatku kódového bloku deklaruje lokálna premenná. V C ++ môžu byť deklarované kdekoľvek v kódovom bloku pred ich použitím. Lokálne premenné sa dajú získať iba pomocou vyhlásení napísaných vo funkcii, v ktorej sa deklaruje miestna premenná. Sú zabezpečené v tom zmysle, že nemôžu byť prístupné žiadnou inou funkciou toho istého programu.
Miestna premenná existuje až do vykonania bloku funkcie a tým sa zničia po ukončení vykonávania bloku. Miestne premenné stratia svoj obsah hneď ako vykonanie opustil blok, v ktorom sú deklarované.
Dôvodom je to, že lokálne premenné sú uložené v zásobníku, pokiaľ nie je špecifikované ich špeciálne ukladanie. Stoh má dynamický charakter a zmena umiestnenia pamäte vedie k tomu, že lokálna premenná neudržiava svoju hodnotu hneď, ako existuje blok funkcie.
Poznámka:
Existuje však spôsob, ako zachovať hodnotu lokálnej premennej pomocou "statického" modifikátora.
Definícia globálnej premennej
Globálna premenná sa deklaruje mimo všetkých funkcií prítomných v programe. Na rozdiel od lokálnych premenných je globálna premenná prístupná ľubovoľnou funkciou prítomnou v programe. Globálne premenné nie sú veľmi spoľahlivé, pretože ich hodnota môže byť zmenená akoukoľvek funkciou prítomnou v programe.
Globálne premenné zostávajú v platnosti až do úplného vykonania celého programu. Globálne premenné si zachovajú svoje hodnoty až do vykonávania programu. Dôvodom je, že sú uložené na pevnej oblasti pamäte, o ktorej rozhodol kompilátor.
Globálna premenná je užitočná v situáciách, keď viaceré funkcie pristupujú k rovnakým údajom. Použitie veľkého množstva globálnych premenných môže byť problematické, pretože môžu nastať nežiaduce zmeny hodnoty globálnej premennej.
Kľúčový rozdiel medzi lokálnou a globálnou premennou.
- Miestne premenné sa nazývajú "miestne", pretože sú známe len vyhláseniam napísaným vo funkcii, v ktorej sú deklarované a nie sú známe žiadne ďalšie funkcie prítomné mimo daného funkčného bloku. V prípade globálnej premennej sú známe každú funkciu prítomnú v programe; preto sa nazývajú "globálne".
- Globálne premenné si ponechajú svoju hodnotu až do ukončenia programu, pretože sú uložené na pevnom mieste, o ktorom rozhodol kompilátor. Miestne premenné sú uložené v zásobníku; a preto si nezachovávajú svoju hodnotu, pretože "stack" má dynamický charakter, ale kompilátor môže byť nasmerovaný na zachovanie ich hodnoty pomocou "statického" modifikátora.
- Ak globálna a miestna premenná sú deklarované s rovnakým názvom potom všetky príkazy blokového kódu, v ktorom je deklarovaná lokálna premenná, budú odkazovať iba na lokálnu premennú a nemajú žiadny vplyv na globálnu premennú.
- Miestna premenná je zničená, keď riadenie programu opustí blok, v ktorom je deklarovaná lokálna premenná. Globálna premenná je však zničená po ukončení celého programu.
záver:
Lokálne a globálne premenné sú rovnako potrebné pri písaní programu. Vyhlásenie veľkého množstva globálnych premenných by však mohlo byť problematické vo veľkom programe, pretože to môže spôsobiť neželané zmeny globálnej premennej; a bolo by ťažké určiť, ktorá časť programu sa zmenila. Preto by sme sa mali vyhnúť deklarovaniu nepotrebných globálnych premenných.