A helyi és a globális változó közötti különbség
Főbb különbségek a helyi változó és a globális változó között
- A lokális változót a függvényen belül, míg a globális változót a függvényen kívül deklarálják.
- A lokális változók akkor jönnek létre, amikor a függvény elindította a végrehajtást, és elvesznek, amikor a függvény leáll, másrészt a globális változó a végrehajtás megkezdésekor jön létre, és a program végén elvész.
- A helyi változó nem biztosít adatmegosztást, míg a globális változó adatmegosztást biztosít.
- A helyi változókat a verem tárolja, míg a globális változót a fordító által meghatározott rögzített helyen tárolja.
- A paraméterek átadása lokális változókhoz szükséges, míg globális változók esetén nem szükséges
Mi az a változó?
A változó egy tárterülethez rendelt név, amelyet a program kezelhet. A változó típusa határozza meg a változó memóriájának méretét és elrendezését.
Meghatározza továbbá a memóriában tárolandó értékek tartományát és az adott változóra alkalmazható műveletek jellegét.
Változók köre
A változó hatóköre egyszerűen egy változó élettartama. Ez egy kódblokk, amely alatt egy változó alkalmazható vagy él. Például:
function foo(){ var x; }
Egy „x” változót deklarál a „foo” függvényen belül. A változó hatóköre a függvényen belül marad, a függvényen kívül nem használható.
Három helyen lehet változókat deklarálni változó programozási nyelven:
- Függvényen vagy blokkon belül: Helyi változók
- Az összes függvényen kívül: Globális változók
- A függvényparaméterek meghatározásában: Formális paraméterek
Helyi változó
Helyi változó a programozási blokkon vagy alprogramokon belül deklarált változó típusaként van definiálva. Csak abban az alprogramban vagy kódblokkban használható, amelyben deklarálva van. A lokális változó addig létezik, amíg a függvény blokkja végrehajtás alatt van. Ezt követően automatikusan megsemmisül.
Példa a helyi változóra
public int add(){ int a =4; int b=5; return a+b; }
Itt az „a” és „b” helyi változók
Globális változó
A Globális változó a programban az alprogramon vagy függvényen kívül definiált változó. Globális hatóköre azt jelenti, hogy a program teljes élettartama alatt megőrzi értékét. Ezért a programban bármely, a programon belül definiált funkcióval elérhető, hacsak nincs árnyékolva.
Példa:
int a =4; int b=5; public int add(){ return a+b; }
Itt „a” és „b” globális változók.
Helyi változó vs globális változók
Íme néhány alapvető különbség a helyi és a globális változók között.
Vizsgált paraméter | helyi | Globál |
---|---|---|
Kör | Ez egy függvényen belül van deklarálva. | A függvényen kívül van deklarálva. |
Érték | Ha nincs inicializálva, a rendszer egy szemét értéket tárol | Ha nincs inicializálva, a nulla alapértelmezettként kerül tárolásra. |
Élettartam | Akkor jön létre, amikor a függvény elindítja a végrehajtást, és elveszik, amikor a függvények befejeződnek. | A program globális végrehajtásának megkezdése előtt jön létre, és a program befejezésekor elveszik. |
Adatmegosztás | Az adatmegosztás nem lehetséges, mivel a helyi változó adatai csak egy funkcióval érhetők el. | Az adatmegosztás lehetséges, mivel több funkció is hozzáférhet ugyanahhoz a globális változóhoz. |
paraméterek | A paraméterek átadása szükséges ahhoz, hogy a helyi változók hozzáférjenek az értékhez más függvényben | A paraméterek átadása nem szükséges egy globális változóhoz, mivel az egész programban látható |
Változó érték módosítása | Ha a lokális változó értéke egy függvényben módosul, a változások nem láthatók egy másik függvényben. | Ha egy függvényben módosítjuk a globális változó értékét, a változások a program többi részében is láthatók. |
Hozzáfért | A lokális változókat utasítások segítségével érhetjük el, egy függvényen belül, amelyben deklarálva vannak. | A globális változókat a program bármely utasításával elérheti. |
Memória tárolása | Ha nincs megadva, a veremben tárolja. | A fordító által meghatározott rögzített helyen tároljuk. |
A globális változók használatának előnyei
- A globális változót egy program összes függvényéből vagy moduljából érheti el
- A globális változót csak egyszer kell deklarálnia a modulokon kívül.
- Ideálisan használható „állandók” tárolására, mivel segít megőrizni a konzisztenciát.
- A globális változó akkor hasznos, ha több függvény is hozzáfér ugyanahhoz az adathoz.
A helyi változók használatának előnyei
- A lokális változók használata garantálja, hogy a változók értékei érintetlenek maradnak a feladat futása közben
- Ha több feladat megváltoztatja az egyidejűleg futó változót, akkor az eredmény megjósolhatatlan lehet. De a helyi változóként való deklarálás megoldja ezt a problémát, mivel minden feladat létrehozza a saját példányát a helyi változóból.
- A helyi változóknak ugyanazt a nevet adhatjuk a különböző függvényekben, mert csak az a függvény ismeri fel őket, amelyben deklarálva vannak.
- A helyi változók törlődnek, amint bármely funkció véget ér, és felszabadítja az általa elfoglalt memóriaterületet.
A globális változók használatának hátrányai
- Túl sok változó van deklarálva globálisnak, és a program végrehajtásáig a memóriában maradnak. Ez a Memória megtelt problémát okozhatja.
- Az adatok bármely funkcióval módosíthatók. A programban írt bármely utasítás megváltoztathatja a globális változó értékét. Ez megjósolhatatlan eredményeket adhat többfeladatos környezetben.
- Ha a globális változókat a kód átalakítása miatt leállítják, akkor minden olyan modult meg kell változtatnia, ahol meghívásra kerültek.
A helyi változók használatának hátrányai
- A lokális változó hibakeresési folyamata meglehetősen bonyolult.
- A közös adatokat ismételten át kell adni, mivel az adatmegosztás nem lehetséges a modulok között.
- Nagyon korlátozott hatókörük van.
Mi a hasznosabb?
A lokális és a globális változó egyformán fontos bármilyen nyelvű program írásakor. A globális változók nagy része azonban hatalmas memóriát foglalhat el. A globális változók nem kívánatos változását nehéz azonosítani. Ezért tanácsos kerülni a nem kívánt globális változók deklarálását.