Globální proměnná v programování je proměnná, jejíž rozsah je celý program, pokud není přepsána . Mechanismy pro interakci s globálními proměnnými se nazývají mechanismy pro přístup ke globálnímu prostředí nebo stavu ( globální prostředí , globální stav ) . Globální proměnné lze použít pro interakci mezi procedurami a funkcemi jako alternativu k předávání argumentů a vracení hodnot [1] .
Použití globálních proměnných má nevýhody: globální proměnnou lze v libovolném bodě programu změnit (pokud není v chráněné paměti nebo deklarována jako proměnná pouze pro čtení ), což může ovlivnit činnost ostatních částí programu. program [2] . Z tohoto důvodu mají globální proměnné neomezený potenciál pro vytváření vzájemných závislostí, což vede ke složitosti programu. V některých případech je však užitečné použít globální proměnné. Lze je například použít, abyste nemuseli často používané proměnné předávat více funkcemi. Globální proměnné také znesnadňují integraci modulů , protože dříve napsaný kód může obsahovat globální proměnné se stejnými názvy jako ve vložitelném modulu.
Globální proměnné se široce používají k předávání dat mezi částmi kódu, které se neúčastní vztahů mezi voláními, jako jsou paralelní vlákna provádění nebo obslužné programy signálů . Bez správného uzamčení (například pomocí mutexu ) nebude kód využívající globální proměnné bezpečné pro vlákna , s výjimkou proměnných pouze pro čtení v chráněné oblasti paměti . S nárůstem počtu proměnných, a tedy i zámků , se zvyšuje pravděpodobnost uváznutí .
Příklad v C :
int a ; /* Deklarování globální celočíselné proměnné "a" */ plovák b = 6 ; /* Deklarace globální proměnné s plovoucí desetinnou čárkou "b" a přiřazení hodnoty "6" */ int main ( void ) { a = 12 _ /* Přiřazení proměnné "a" hodnoty "12" */ vrátit a + b ; }