Rozdiel medzi miestnou a globálnou premennou

Autor: Laura McKinney
Dátum Stvorenia: 1 Apríl 2021
Dátum Aktualizácie: 5 Smieť 2024
Anonim
Rozdiel medzi miestnou a globálnou premennou - Technológie
Rozdiel medzi miestnou a globálnou premennou - Technológie

Obsah


Ako sme už diskutovali, premenná je názov priradený miestu v pamäti a pred použitím sa musí deklarovať. V C sú všetky premenné deklarované na začiatku programu. V C ++ sa premenné môžu deklarovať kedykoľvek pred tým, ako sa použijú v pokynoch.

Premenné sú klasifikované ako „lokálna“ a „globálna“ premenná, ktorá je hlavnou témou našej diskusie. Tu je hlavný rozdiel medzi lokálnou a globálnou premennou ten, že lokálna premenná je deklarovaná vo funkčnom bloku. Naopak, 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.

  1. Porovnávacia tabuľka
  2. definícia
  3. Kľúčové rozdiely
  4. výhody
  5. nevýhody
  6. záver

Porovnávacia tabuľka:

ZÁKLAD PRE POROVNANIE MIESTNA PREMENNÁ GLOBÁLNA PREMENNÁ
vyhlásenie Premenné sú deklarované vo vnútri funkcie.
Premenné sú deklarované mimo akejkoľvek funkcie.
Rozsah
V rámci funkcie, v ktorej sú deklarované.V priebehu celého programu.
hodnota
Neinicializovaná lokálna premenná má za následok uloženie hodnoty odpadu.Neinicializovaná globálna premenná predvolene ukladá nulu.
prístup Prístup k nim majú iba vyhlásenia, vo vnútri funkcie, v ktorej sú deklarované. Prístup k akémukoľvek vyhláseniu v celom programe.
Zdieľanie údajovNeboli poskytnutéuľahčenie
životVytvorené, keď je funkčný blok zadaný a zničený pri ukončení. Zostaňte po celú dobu vykonávania programu.
skladovanie
Lokálne premenné sa ukladajú do zásobníka, pokiaľ nie je uvedené inak.
Uložené na pevnom mieste, o ktorom rozhodne kompilátor.
Prechod parametrovPotrebnéNevyžaduje sa pre globálne premenné.
Zmeny v premennej hodnoteAkákoľvek zmena zahrnutá v lokálnej premennej neovplyvní ďalšie funkcie programu.Zmeny použité v globálnej premennej funkcie odrážajú zmeny v celom programe.

Definícia miestnej premennej

lokálna premenná je vždy deklarovaná vo funkčnom bloku. V C sa lokálna premenná deklaruje na začiatku bloku kódu. V C ++ ich možno deklarovať kdekoľvek v kódovom bloku pred ich použitím. Prístup k lokálnym premenným je možný iba príkazmi napísanými vo vnútri funkcie, v ktorej sú deklarované lokálne premenné. Sú bezpečné v tom zmysle, že k nim nemôže byť prístupná iná funkcia toho istého programu.


Lokálna premenná existuje, kým nie je blok vykonaný vo funkcii, a preto je zničený po ukončení vykonávania bloku. Lokálne premenné strácajú svoj obsah, len čo vykonávanie opustilo 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 uloženie. Zásobník je dynamickej povahy a zmena umiestnenia pamäte vedie k dôvodu, prečo lokálna premenná neponecháva svoju hodnotu, akonáhle blok funkcie neexistuje.

Poznámka:
Existuje však spôsob, ako zachovať hodnotu miestnej premennej pomocou modifikátora „statický“.

Definícia globálnej premennej

globálna premenná je deklarovaná mimo všetkých funkcií prítomných v programe. Na rozdiel od lokálnych premenných, ku globálnej premennej sa dá dostať pomocou akejkoľvek funkcie prítomnej v programe. Globálne premenné nie sú príliš spoľahlivé, pretože ich hodnota môže byť zmenená akoukoľvek funkciou prítomnou v programe.


Zostávajú v platnosti až do úplného spustenia celého programu. Globálne premenné si zachovávajú svoje hodnoty, až kým sa program nespustí. Dôvod je ten, že sú uložené v pevnej oblasti pamäte, o ktorej rozhodne kompilátor.

Globálna premenná je užitočná v situáciách, keď k rovnakým údajom pristupuje viacero funkcií. Používanie veľkého počtu globálnych premenných môže byť problematické, pretože môžu dôjsť k nežiaducim zmenám hodnoty globálnej premennej.

  1. Miestne premenné sa nazývajú „miestne“, pretože sú známe iba pre príkazy napísané vo funkcii, v ktorej sú deklarované, a nie sú známe žiadnej inej funkcii prítomnej mimo tohto funkčného bloku. V prípade globálnej premennej sú známe každej funkcii prítomnej v programe; preto sa nazývajú „globálne“.
  2. Globálne premenné si zachovávajú svoju hodnotu, kým sa program nenachádza vo fáze vykonávania, pretože sú uložené na pevnom mieste, o ktorom rozhodne kompilátor. Lokálne premenné sú uložené v zásobníku; preto si nezachovávajú svoju hodnotu, pretože „stack“ má dynamickú povahu, ale kompilátor môže byť vyzvaný, aby si zachoval svoju hodnotu pomocou „statického“ modifikátora.
  3. Ak sú globálna a lokálna premenná deklarované s rovnakým názvom, všetky príkazy kódového bloku, v ktorom je deklarovaná lokálna premenná, sa budú vzťahovať iba na lokálnu premennú a nespôsobia žiadny účinok pre globálnu premennú.
  4. Lokálna premenná je zničená, keď je kontrola výstupu programu z bloku, v ktorom je deklarovaná lokálna premenná. Po ukončení celého programu sa však globálna premenná zruší.

výhody

Lokálna premenná

  • Hlavnou výhodou miestnej premennej je to, že nedochádza k náhodnej zmene údajov. Premenná je deklarovaná vo vnútri bloku a tento blok kódu používa premennú a zabraňuje nežiaducim vedľajším účinkom.
  • Lokálna premenná spotrebuje pamäť na obmedzenú dobu, iba ak sa vykoná blok obsahujúci premennú.

Globálna premenná

  • Globálne premenné sú veľmi užitočné, keď pracujete s niekoľkými funkciami programu, ktoré manipulujú s rovnakými údajmi.
  • Zmeny, ktoré je potrebné uplatniť v celom programe, by sa uľahčili implementáciou globálnej premennej.
  • Môžeme pristupovať odkiaľkoľvek alebo prostredníctvom ľubovoľnej náhodnej funkcie programu.

nevýhody

Lokálna premenná

  • Rozsah lokálnej premennej je obmedzený.
  • Zakazuje zdieľanie údajov.
  • Nie sú schopní uchovať dáta medzi hovormi, pretože miestne premenné sú generované a odstraňované pri každom vstupe a výstupe z bloku. Statický modifikátor sa však môže použiť na zachovanie hodnôt.

Globálna premenná

  • Použitie veľkého množstva globálnych premenných by mohlo mať za následok generovanie programových chýb.
  • Hlavným problémom, ktorý spôsobuje, je náhodný výskyt zmien v dôsledku šírených globálnych premenných v celom programe.
  • Mohlo by to tiež viesť k potrebe vykonať zmenu kódu, čo je veľmi rozsiahly proces, v rámci ktorého sa celý programový kód reštrukturalizuje.

záver:

Pri písaní programu sú potrebné lokálne aj globálne premenné. Vyhlásenie veľkého počtu globálnych premenných by však mohlo byť v masívnom programe problematické, pretože by mohlo spôsobiť nežiaduce zmeny globálnej premennej; a bolo by ťažké zistiť, ktorá časť programu túto zmenu vykonala. Preto by sme sa mali vyhýbať deklarovaniu nepotrebných globálnych premenných.