Global variabel

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 2 maj 2018; kontroller kräver 4 redigeringar .

En global variabel i programmering  är en variabel vars omfattning är hela programmet, såvida den inte åsidosätts . Mekanismer för att interagera med globala variabler kallas mekanismer för att komma åt den globala miljön eller staten ( global miljö , global stat ) .  Globala variabler kan användas för interaktion mellan procedurer och funktioner som ett alternativ till att skicka argument och returnera värden [1] .

Användningen av globala variabler har nackdelar: en global variabel kan ändras när som helst i programmet (om den inte finns i skyddat minne eller deklareras som en skrivskyddad variabel ), vilket kan påverka funktionen för andra delar av programmet programmet [2] . Av denna anledning har globala variabler obegränsad potential för att skapa ömsesidiga beroenden, vilket leder till programkomplexitet. I vissa fall är det dock användbart att använda globala variabler. Till exempel kan de användas för att undvika att behöva skicka ofta använda variabler genom flera funktioner. Globala variabler gör det också svårt att integrera moduler eftersom kod skriven tidigare kan innehålla globala variabler med samma namn som i den inbäddningsbara modulen.

Globala variabler används ofta för att skicka data mellan kodsektioner som inte deltar i anropsrelationer, såsom parallella exekveringstrådar eller signalhanterare . Utan korrekt låsning (till exempel med en mutex ) kommer kod som använder globala variabler inte att vara trådsäker , förutom skrivskyddade variabler i ett skyddat minnesområde . Med en ökning av antalet variabler och följaktligen låsningar ökar sannolikheten för dödlägen .

Exempel i C :

int a ; /* Deklarera en global heltalsvariabel "a" */ float b = 6 ; /* Deklarera en global flyttalsvariabel "b" och tilldela värdet "6" till den */ int main ( void ) { a = 12 _ /* Tilldela variabeln "a" värdet "12" */ returnera a + b ; }

Anteckningar

  1. Kernighan och Ritchie The C Programming Language - s. 44, 87.
  2. William Wulf och Mary Shaw, "Global Variable Considered harmful", ACM SIGPLAN Notices, volym 8, nummer 2, februari 1973, s. 28-34.

Länkar