Mi az a változó?
A változó egy tároló terü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éktartományt és a változóra alkalmazható műveletek jellegét.
Ebben az oktatóanyagban megtanulja
- A változók köre
- A helyi változó meghatározása
- A globális változó meghatározása
- Helyi változó vs. globális változók
- A globális változók használatának előnyei
- A helyi változók használatának előnyei
- A globális változók használatának hátrányai
- A helyi változók használatának hátrányai
- Mi a hasznosabb?
A 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 életben van. Például:
function foo(){var x;}
A "foo" függvényben "x" változót deklarálsz. A változó hatóköre a függvényen belül marad, ezért a funkción kívül nem használható.
Három helyen deklarálhatjuk a változókat a változó programozási nyelvre:
- Funkció vagy blokk belsejében: Helyi változók
- Minden funkción kívül: Globális változók
- A függvényparaméterek meghatározásában: Formális paraméterek
FŐ KÜLÖNBSÉG
- A helyi változót egy függvényen belül, míg a globális változót a függvényen kívül deklaráljuk.
- A helyi változók akkor jönnek létre, amikor a függvény végrehajtása megkezdődött, és elvesznek, amikor a függvény leáll, másrészt a globális változó a végrehajtás kezdetekor jön létre, és elvész, amikor a program véget ér.
- A helyi változó nem biztosít adatmegosztást, míg a globális változó az adatok megosztását.
- A helyi változókat a veremben tároljuk, míg a globális változót a fordító által meghatározott fix helyen tároljuk.
- Paraméterek átadása szükséges a helyi változókhoz, míg globális változóhoz nem
Helyi változó
A helyi változó a programozó blokkon vagy alprogramokon deklarált változó típusaként definiálható. Csak azon alprogramban vagy kódblokkban használható, amelyben deklarálva van. A helyi változó mindaddig 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 a 'b' helyi változók
Globális változó
A program globális változója az alprogramon vagy a függvényen kívül definiált változó. Globális hatóköre azt jelenti, hogy értékét a program egész élettartama alatt megőrzi. Ennélfogva az egész programban elérhető, a programban meghatározott bármely funkcióval, hacsak nem árnyékolt.
Példa:
int a =4;int b=5;public int add(){return a+b;}
Itt az 'a' és a '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 globális változók között.
Paraméter | Helyi | Globális |
---|---|---|
Hatály | Egy függvényen belül van deklarálva. | A funkción kívülre van deklarálva. |
Érték | Ha nincs inicializálva, akkor egy szemét értéket tárol | Ha nincs inicializálva, akkor a nulla alapértelmezés szerint tárolásra kerül. |
Élettartam | Akkor jön létre, amikor a függvény elindítja a végrehajtást, és elveszik, amikor a funkciók leállnak. | A program a globális végrehajtás megkezdése előtt jön létre és elvész, amikor a program befejeződik. |
Adatmegosztás | Adatmegosztás nem lehetséges, mivel a helyi változó adatai csak egy funkcióval érhetők el. | Adatmegosztás lehetséges, mivel több funkció is elérheti ugyanazt a globális változót. |
Paraméterek | Paraméterek átadása szükséges ahhoz, hogy a helyi változók elérjék az értéket egy másik függvényben | A paraméterek átadása nem szükséges egy globális változóhoz, mivel az az egész programban látható |
A változó érték módosítása | Amikor a helyi változó értéke módosul az egyik függvényben, akkor egy másik függvényben a változások nem láthatók. | Ha a globális változó értéke egy függvényben módosul, akkor a program többi részén változások láthatók. |
Hozzáférés | A helyi változók utasítások segítségével érhetők el, egy olyan függvényen belül, amelyben deklarálva vannak. | A globális változókat a program bármelyik utasításával elérheti. |
Memória tárolása | Hacsak nincs megadva, a veremben tárolódik. | A fordító által meghatározott fix helyen tárolódik. |
A globális változók használatának előnyei
- A globális változóhoz a program összes funkciója vagy modulja hozzáférhet
- Csak egyszeri globális változót kell deklarálnia a modulokon kívül.
- Ideális az "állandók" tárolására, mivel segít megőrizni az állagot.
- A globális változó akkor hasznos, ha több funkció fér hozzá ugyanazokhoz az adatokhoz.
A helyi változók használatának előnyei
- A helyi változók használata garantálja, hogy a változók értékei sértetlenek maradnak a feladat futása közben
- Ha több feladat változtat egyetlen változót, amely egyszerre fut, akkor az eredmény kiszámíthatatlan lehet. De a helyi változónak nyilvánítás megoldja ezt a problémát, mivel minden feladat létrehozza a helyi változó saját példányát.
- Megadhatja a helyi változóknak ugyanazt a nevet a különböző függvényekben, mert csak az a funkció ismeri fel őket, amelyben deklaráltak.
- A helyi változókat törli, amint bármely funkció véget ér, és felszabadítják az általa elfoglalt memóriaterületet.
A globális változók használatának hátrányai
- Túl sok globálissá nyilvánított változó akkor marad a memóriában, amíg a program végrehajtása befejeződik. Ez a memórián belüli problémát okozhatja.
- Az adatok bármely funkcióval módosíthatók. A programba írt bármely állítás megváltoztathatja a globális változó értékét. Ez kiszámíthatatlan eredményeket hozhat többfeladatos környezetekben.
- Ha a globális változókat a kód újrakezdése miatt megszüntetjük, akkor meg kell változtatnia az összes modult, ahol hívják őket.
A helyi változók használatának hátrányai
- A helyi változó hibakeresési folyamata meglehetősen bonyolult.
- Az ismételt továbbításhoz szükséges közös adatok, mivel az adatok megosztása nem lehetséges a modulok között.
- Nagyon korlátozott hatályúak.
Mi a hasznosabb?
A helyi és globális változó egyaránt fontos, miközben programot írunk bármilyen nyelvre. A globális változó nagy száma azonban hatalmas memóriát foglalhat el. A globális változók nemkívánatos változását nehéz azonosítani. Ezért célszerű elkerülni a nem kívánt globális változók deklarálását.