A változókat a „helyi” és „globális” változók közé sorolják, ami a vita fő témája. Itt a helyi és a globális változó közötti fő különbség az, hogy egy lokális változó egy függvényblokkban kerül bejelentésre, ahol a globális változó a program funkcióin kívül kerül kimutatásra.
Tanuljunk meg néhány további különbséget a helyi és a globális változók között egy összehasonlító táblázatsal együtt.
Összehasonlító táblázat:
Az összehasonlítás alapja | Helyi változó | Globális változó |
---|---|---|
Nyilatkozat | A változók egy funkció belsejében jelennek meg. | A változókat bármely funkción kívül adják meg. |
terület | Egy függvényen belül, amelyen belül bejelentésre kerül sor. | A program során. |
Hozzáférés | Csak az állításokhoz férhetnek hozzá, egy olyan funkción belül, amelyikben bejelentették őket. | Hozzáférés az egész program bármely állításához. |
Élet | Létrehozva, amikor a funkcióblokk be van írva és megsemmisül a kilépéskor. | A program teljes ideje alatt fennmarad a létezés. |
Tárolás | A helyi változókat a veremben tároljuk, hacsak nincs megadva. | A fordító által meghatározott helyszínen tárolva. |
A helyi változó meghatározása
A helyi változó mindig egy funkcióblokkban van bejelentve. A C-ben egy helyi változó szerepel a kódblokk kezdetén. A C ++ programban a kód blokkban bárhol megadható, mielőtt használatuk megtörténne. A helyi változókhoz csak a függvényben írt utasítások érhetők el, amelyekben a helyi változót bejelentik. Bizonyos értelemben biztonságosak, hogy nem férhetnek hozzá a program bármely más funkciójához.
A helyi változó addig létezik, amíg a függvény blokkja végrehajtásra nem kerül, és ezáltal megsemmisül a végrehajtás befejezése után. A helyi változók elvesztik a tartalmukat, amint a végrehajtás elhagyta azt a blokkot, amelyben bejelentették.
Ennek oka, hogy a helyi változókat a veremben tárolják, kivéve, ha speciális tárolásuk meg van adva. A verem a természetben dinamikus, és a memóriahely megváltozása az oka annak, hogy a helyi változó nem tartja meg az értékét, amint a függvény blokkja létezik.
Jegyzet:
Van azonban módja a helyi változó értékének megőrzésére a „statikus” módosító segítségével.
A globális változó meghatározása
A globális változó a program összes funkcióján kívül jelenik meg. Ellentétben a helyi változókkal, a globális változó elérhető a programban lévő bármely funkcióval. A globális változók nem elég megbízhatóak, mivel értéküket a program bármely funkciója megváltoztathatja.
A globális változók mindaddig fennmaradnak, amíg az egész program teljes egészében végrehajtódik. A globális változók megtartják értékeiket, amíg a program végrehajtásra nem kerül. Ennek oka az, hogy a rögzített memóriaterületen tárolják őket, amit a fordító határoz meg.
A Globális változó olyan helyzetekben hasznos, amikor több funkció ugyanazokat az adatokat érinti. Nagyszámú globális változó használata problémás lehet, mivel nemkívánatos változások történhetnek egy globális változó értékében.
A különbség a helyi és a globális változók között.
- A helyi változókat „lokálisnak” nevezik, mert csak olyan függvényekről ismertek, amelyekben egy olyan függvényt írtak, amelyen belül bejelentették őket, és amelyek nem ismertek a funkcióblokkon kívül más funkciókra. Globális változó esetén a program minden egyes funkciója ismert; ezért „globálisnak” nevezik őket.
- A globális változók megtartják értéküket, amíg a program végrehajtási fázisban van, mivel azokat a fordító által meghatározott fix helyen tárolják. A helyi változókat a veremen tárolják; ezért nem tartják meg az értéküket, mivel a „stack” dinamikus jellegű, de a fordító a statikus módosító használatával irányíthatja értékét.
- Ha egy globális és egy helyi változót ugyanazzal a névvel deklarálnak, akkor egy kódblokk minden olyan állítása, amelyben a helyi változó deklarálva van, csak egy helyi változóra utal, és nem okoz semmilyen hatást a globális változóra.
- A helyi változó megsemmisül, amikor a program kilépése a blokkból kilép, amelyben a helyi változó szerepel. A teljes program megszűnésekor azonban egy globális változó megsemmisül.
Következtetés:
A helyi és globális változók egyaránt szükségesek a program írásakor. De a nagyszámú globális programban nagyszámú globális változó bejelentése problematikus lehet, mivel nemkívánatos változásokat okozhat egy globális változóban; és nehezen tudnánk azonosítani, hogy a program melyik része tette ezt a változást. Ezért kerülni kell a felesleges globális változók kijelentését.