Globális változó

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2018. május 2-án felülvizsgált verziótól ; az ellenőrzések 4 szerkesztést igényelnek .

A globális változó a programozásban  olyan változó , amelynek hatóköre a teljes program, kivéve, ha felülírja . A globális változókkal való kölcsönhatás mechanizmusait a globális környezethez vagy állapothoz való hozzáférés mechanizmusainak nevezzük ( globális környezet , globális állapot ) . Globális változók használhatók az eljárások és a függvények közötti interakcióhoz az argumentumok átadásának és az értékek visszaadásának alternatívájaként [1] .  

A globális változók használatának vannak hátrányai: egy globális változó a program bármely pontján megváltoztatható (ha nincs védett memóriában , vagy csak olvasható változóként van deklarálva ), ami befolyásolhatja a program egyéb részeinek működését. a program [2] . Emiatt a globális változóknak korlátlan lehetőségük van kölcsönös függőségek létrehozására, ami a program bonyolultságához vezet. Bizonyos esetekben azonban hasznos globális változókat használni. Használhatók például arra, hogy elkerüljék a gyakran használt változókat több függvényen keresztül. A globális változók a modulok integrálását is megnehezítik, mivel a korábban írt kód globális változókat tartalmazhat, amelyek neve megegyezik a beágyazható moduléval.

A globális változókat széles körben használják adatok továbbítására olyan kódrészletek között, amelyek nem vesznek részt a hívási kapcsolatokban, például párhuzamos végrehajtási szálak vagy jelkezelők . Megfelelő zárolás nélkül (például mutex segítségével) a globális változókat használó kód nem lesz szálbiztos , kivéve a védett memóriaterületen lévő csak olvasható változókat . A változók számának és ennek megfelelően a zárak számának növekedésével nő a holtpontok valószínűsége .

Példa C -ben :

int a ; /* "a" globális egész változó deklarálása */ úszó b = 6 ; /* A "b" globális lebegőpontos változó deklarálása és a "6" érték hozzárendelése */ int main ( érvénytelen ) { a = 12_ _ /* Az "a" változóhoz "12" értéket rendelünk */ return a + b ; }

Jegyzetek

  1. Kernighan és Ritchie A C programozási nyelv – 44., 87. o.
  2. William Wulf és Mary Shaw, "Globális változót károsnak tartanak", ACM SIGPLAN közlemények, 8. kötet, 2. szám, 1973. február, 28-34.

Linkek