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 ; }