Rozdiel medzi lokálnou a globálnou premennou

Obsah:

Anonim

Čo je to premenná?

Premenná je názov, ktorý sa priradí úložnej oblasti, s ktorou program môže manipulovať. Typ premennej určuje veľkosť a rozloženie pamäte premennej.

Určuje tiež rozsah hodnôt, ktoré je potrebné uložiť do tejto pamäte, a povahu operácií, ktoré je možné na túto premennú použiť.

V tomto návode sa naučíte

  • Rozsah premenných
  • Definícia miestnej premennej
  • Definícia globálnej premennej
  • Lokálna premenná vs. globálne premenné
  • Výhody použitia globálnych premenných
  • Výhody použitia miestnych premenných
  • Nevýhody použitia globálnych premenných
  • Nevýhody používania miestnych premenných
  • Čo je užitočnejšie?

Rozsah premenných

Rozsah premennej je jednoducho jej životnosť. Je to blok kódu, pod ktorým je premenná použiteľná alebo živá. Napríklad:

function foo(){var x;}

Deklarujete premennú „x“ vo vnútri funkcie „foo“. Rozsah tejto premennej zostáva vo vnútri tejto funkcie, nemožno ju použiť mimo tejto funkcie.

Existujú tri miesta, kde môžete premenné deklarovať programovací jazyk premenných:

  • Vo vnútri funkcie alebo bloku: Lokálne premenné
  • Mimo všetkých funkcií: globálne premenné
  • V definícii funkčných parametrov: Formálne parametre

KĽÚČOVÝ ROZDIEL

  • Lokálna premenná je deklarovaná vo vnútri funkcie, zatiaľ čo globálna premenná je deklarovaná mimo funkcie.
  • Lokálne premenné sa vytvárajú, keď funkcia začala vykonávať, a stratia sa po ukončení funkcie, na druhej strane sa globálna premenná vytvorí pri spustení funkcie a stratí sa po ukončení programu.
  • Lokálna premenná neposkytuje zdieľanie údajov, zatiaľ čo globálna premenná poskytuje zdieľanie údajov.
  • Lokálne premenné sú uložené v zásobníku, zatiaľ čo globálna premenná je uložená na pevnom mieste, o ktorom rozhodne kompilátor.
  • Pre lokálne premenné sa vyžaduje odovzdanie parametrov, zatiaľ čo pre globálnu premennú to nie je potrebné

Miestna premenná

Lokálna premenná je definovaná ako typ premennej deklarovanej v rámci programovacieho bloku alebo podprogramov. Môže sa použiť iba vo vnútri podprogramu alebo bloku kódu, v ktorom je deklarovaný. Lokálna premenná existuje, kým sa blok funkcie nevykonáva. Potom bude automaticky zničený.

Príklad lokálnej premennej

public int add(){int a =4;int b=5;return a+b;}

Tu sú „a“ a „b“ miestne premenné

Globálna premenná

Globálne premenné v programe je premenná definovaná mimo podprogram alebo funkcie. Má globálny rozsah, čo znamená, že si zachováva svoju hodnotu počas celej životnosti programu. Preto je k nej prístup v celom programe akoukoľvek funkciou definovanou v programe, pokiaľ nie je tieňovaná.

Príklad:

int a =4;int b=5;public int add(){return a+b;}

Tu sú „a“ a „b“ globálne premenné.

Lokálna premenná vs. Globálne premenné

Tu uvádzame niektoré zásadné rozdiely medzi lokálnymi a globálnymi premennými.

Parameter Miestne Globálne
Rozsah Je deklarovaná vo vnútri funkcie. Deklaruje sa mimo funkcie.
Hodnota Ak nie je inicializovaný, je uložená smetná hodnota Pokiaľ nie je inicializovaný, nula sa uloží ako predvolená.
Život Vytvára sa pri spustení funkcie a stratí sa pri ukončení funkcií. Vytvára sa pred globálnym spustením programu a po ukončení programu sa stratí.
Zdieľanie údajov Zdieľanie údajov nie je možné, pretože k údajom lokálnej premennej je možné získať prístup iba pomocou jednej funkcie. Zdieľanie údajov je možné, pretože k tej istej globálnej premennej majú prístup viaceré funkcie.
Parametre Pre prístup k hodnote v inej funkcii je pre lokálne premenné požadované odovzdanie parametrov Pre globálnu premennú nie je potrebné odovzdávanie parametrov, pretože je viditeľná v celom programe
Zmena premennej hodnoty Keď je hodnota lokálnej premennej zmenená v jednej funkcii, zmeny nie sú viditeľné v inej funkcii. Keď je hodnota globálnej premennej zmenená v jednej funkcii, zmeny sú viditeľné vo zvyšku programu.
Prístup k K miestnym premenným je možné pristupovať pomocou príkazov vo vnútri funkcie, v ktorej sú deklarované. K globálnym premenným môžete získať prístup pomocou ľubovoľného príkazu v programe.
Uloženie pamäte Ak nie je uvedené inak, je uložené v zásobníku. Je uložený na pevnom mieste, o ktorom rozhodne kompilátor.

Výhody použitia globálnych premenných

  • Ku globálnej premennej máte prístup zo všetkých funkcií alebo modulov v programe
  • Globálnu premennú musíte deklarovať iba raz mimo modulov.
  • Ideálne sa používa na ukladanie „konštánt“, pretože vám pomáha udržiavať konzistenciu.
  • Globálna premenná je užitočná, keď k rovnakým údajom pristupuje viac funkcií.

Výhody použitia miestnych premenných

  • Použitie lokálnych premenných ponúka záruku, že hodnoty premenných zostanú nedotknuté, kým je úloha spustená
  • Ak niekoľko úloh zmení jednu premennú, ktorá beží súčasne, potom môže byť výsledok nepredvídateľný. Ale vyhlásením za lokálnu premennú sa tento problém vyrieši, pretože každá úloha vytvorí vlastnú inštanciu lokálnej premennej.
  • Lokálnym premenným môžete dať rovnaký názov v rôznych funkciách, pretože sú rozpoznané iba funkciou, v ktorej sú deklarované.
  • Lokálne premenné sa vymažú, akonáhle skončí akákoľvek funkcia, a uvoľnia pamäťový priestor, ktorý zaberá.

Nevýhody používania globálnych premenných

  • Príliš veľa premenných deklarovaných ako globálne, potom zostanú v pamäti, kým sa nedokončí vykonávanie programu. To môže spôsobiť problém s nedostatkom pamäte.
  • Dáta je možné upravovať ľubovoľnou funkciou. Akýkoľvek príkaz napísaný v programe môže zmeniť hodnotu globálnej premennej. To môže v prostredí s viacerými úlohami poskytnúť nepredvídateľné výsledky.
  • Ak sú globálne premenné prerušené z dôvodu refaktoringu kódu, budete musieť zmeniť všetky moduly, kde sa volajú.

Nevýhody používania miestnych premenných

  • Proces ladenia lokálnej premennej je dosť zložitý.
  • Bežné údaje potrebné na opakované odovzdanie, pretože zdieľanie údajov medzi modulmi nie je možné.
  • Majú veľmi obmedzený rozsah pôsobnosti.

Čo je užitočnejšie?

Lokálna a globálna premenná je rovnako dôležitá pri písaní programu v akomkoľvek jazyku. Veľké množstvo globálnych premenných však môže zaberať obrovskú pamäť. Je ťažko identifikovateľná nežiaduca zmena globálnych premenných. Preto je vhodné vyhnúť sa deklarovaniu nežiaducich globálnych premenných.