Különbség a helyi és a globális változó között
Tartalom
- Összehasonlító táblázat:
- A lokális változó meghatározása
- A globális változó meghatározása
- Előnyök
- hátrányok
- Következtetés:
Amint azt korábban tárgyaltuk, a változó egy név, amelyet egy memóriahelynek adunk, és használat előtt deklarálni kell. C-ben az összes változót a program kezdetén deklarálják. A C ++ változatban a változók bármikor deklarálhatók, mielőtt felhasználnák azokat az utasításokban.
A változókat a „helyi” és a „globális” változatokba soroljuk, ami a beszélgetésünk fő témája. A helyi és a globális változó közötti fő különbség itt az, hogy egy helyi változót egy funkcióblokkban deklarálnak. Ezzel szemben a globális változót a program funkcióin kívül deklarálják.
Vizsgáljuk meg még néhány különbséget a helyi és a globális változó között, összehasonlító diagrammal együtt.
- Összehasonlító táblázat
- Meghatározás
- Főbb különbségek
- Előnyök
- hátrányok
- Következtetés
Összehasonlító táblázat:
AZ összehasonlítás alapja | HELYI VÁLTOZÓ | GLOBÁLIS VÁLTOZÓ |
---|---|---|
Nyilatkozat | A változókat egy funkción belül deklarálják. | A változókat bármely funkción kívül deklarálják. |
terület | Egy olyan funkción belül, amelyen belül deklarálják őket. | A program egészében. |
Érték | Az inicializálatlan helyi változó a szemetet tárolja. | Az inicializálatlan globális változó alapértelmezés szerint nullát tárol. |
Hozzáférés | Csak az utasításokkal érhető el, azon funkción belül, amelyben deklarálták őket. | A teljes program bármelyik nyilatkozatával elérhető. |
Az adatok megosztása | Nem biztosított | egyszerűsített |
Élet | A funkcióblokk megadásakor jön létre, és kilépéskor megsemmisíti. | Maradjon fenn a program végrehajtásának teljes ideje alatt. |
Tárolás | A helyi változók a veremben kerülnek tárolásra, hacsak nincs megadva. | Egy rögzített helyen tárolja, amelyet a fordító dönt. |
Paraméter halad | Feltétlenül szükséges | Nem szükséges a globális változókhoz. |
Változások egy változó értékben | A helyi változóban szereplő módosítások nem befolyásolják a program többi funkcióját. | A függvény globális változójában alkalmazott változások a teljes program változásait tükrözik. |
A lokális változó meghatározása
A helyi változó mindig egy funkcióblokkban van deklarálva. A C-ben egy helyi változót deklarálnak a kódblokk elején. A C ++ alkalmazásban a kódblokk bárhol deklarálhatók felhasználásuk előtt. A helyi változók csak olyan függvényen belüli utasításokkal érhetők el, amelyben a helyi változók deklarálva vannak. Biztonságosak abban az értelemben, hogy nem érhetők el ugyanazon program más funkcióival.
A helyi változó addig létezik, amíg a függvény blokkja végrehajtásra nem kerül, és így megsemmisül, miután a végrehajtás kilép a blokkból. A helyi változók elveszítik tartalmát, amint a végrehajtás elhagyta azt a blokkot, amelyben deklarálták.
Ennek oka az, hogy a helyi változókat a veremben tárolják, kivéve, ha a speciális tárolót meghatározzák. A verem jellegénél fogva dinamikus, és a memória elhelyezkedésének megváltozása vezeti azt az okot, hogy a helyi változó nem tartja meg értékét, amint egy funkcióblokk létezik.
Jegyzet:
Van azonban mód a helyi változó értékének megtartására a „statikus” módosító használatával.
A globális változó meghatározása
A globális változó a programban levő összes funkción kívül esik. A helyi változóktól eltérően a globális változóhoz a program bármelyik funkciója hozzáférhető. A globális változók nem nagyon megbízhatóak, mivel értéküket a program bármely funkciója megváltoztathatja.
Egészen addig maradnak fenn, amíg az egész program teljes végrehajtása meg nem történik. A globális változók addig tartják meg az értékeiket, amíg a program végrehajtásra nem kerül. Ennek oka az, hogy a memória rögzített részén tárolódnak, amelyet a fordító dönt.
A globális változó hasznos olyan helyzetekben, amikor több funkció érinti ugyanazt az adatot. Nagyon sok globális változó használata problémás lehet, mivel a globális változó értékében nem kívánt változások történhetnek.
- A helyi változókat „helyi” -nek nevezzük, mert csak azoknak a funkcióknak az utasításaival vannak ismertek, amelyekben belül vannak deklarálva, és az adott funkcióblokkon kívüli más funkciók számára nem ismertek. Globális változó esetén a program minden egyes funkciója ismert; ennélfogva „globálisnak” hívják őket.
- A globális változók addig megőrzik értéküket, amíg a program a végrehajtási szakaszba nem kerül, mivel azokat a fordító által meghatározott rögzített helyen tárolják. A lokális változókat a verem tárolja; ennélfogva nem tartják meg értéküket, mivel a „verem” dinamikus természetű, de a fordítót meg lehet utasítani az érték megtartására a „statikus” módosító használatával.
- Ha egy globális és egy helyi változót ugyanazzal a névvel deklarálnak, akkor egy olyan kódblokk minden állítása, amelyben a helyi változót deklarálják, csak egy helyi változóra vonatkozik, és nem fog hatást gyakorolni a globális változóra.
- Egy helyi változó megsemmisül, amikor a program ellenőrzése kilép a mondatból, amelyben a helyi változó deklarálva van. A globális változó azonban a teljes program leállításakor elpusztul.
Előnyök
Helyi változó
- A helyi változó fő előnye az, hogy az adatok véletlenszerű megváltoztatása nem történik. A változó blokkban van deklarálva, és ezek a kódblokkok a változót használják, és elkerülik a nem kívánt mellékhatásokat.
- A helyi változó csak korlátozott ideig használja a memóriát, csak akkor, amikor a változót tartalmazó blokkot végrehajtják.
Globális változó
- A globális változók nagyon hasznosak, ha a program több funkciójával foglalkozik, ugyanazokkal az adatokkal manipulálva.
- A globális változó bevezetésével könnyebbé válnak a teljes programban alkalmazandó változtatások.
- Bárhonnan vagy a program bármely véletlenszerű funkcióján keresztül hozzáférhetünk.
hátrányok
Helyi változó
- A helyi változó hatóköre korlátozott.
- Tilos az adatok megosztását.
- Nem tudják megőrizni az adatokat a hívások között, mert helyi változókat generálnak és távolítanak el minden egyes belépéskor és kilépéskor a blokkból. A statikus módosító azonban felhasználható az értékek megtartására.
Globális változó
- Nagyszámú globális változó használata programhibákat generálhat.
- A fő problémát a változások véletlenszerű előfordulása okozza, amelyek a program egészében elterjedt globális változók miatt vannak.
- Fontos lehet a kód-refaktorálás végrehajtásának szükségessége is, amely egy nagyon kiterjedt folyamat, ahol a teljes programkód átszervezésre kerül.
Következtetés:
A lokális és a globális változók egyaránt szükségesek és egyformán szükségesek a program írásakor. Nagyon sok globális változó bejelentése azonban problémát jelenthet egy hatalmas programban, mivel nem kívánt változásokat okozhat egy globális változóban; és nehéz lesz azonosítani, hogy a program melyik része változtatta meg. Ezért el kell kerülni a szükségtelen globális változók deklarálását.