Variabilă globală

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 2 mai 2018; verificările necesită 4 modificări .

O variabilă globală în programare  este o variabilă al cărei scop este întregul program, cu excepția cazului în care este suprascrisă . Mecanismele de interacțiune cu variabilele globale se numesc mecanisme de acces la mediul sau starea globală (mediu global , stare globală ) .  Variabilele globale pot fi utilizate pentru interacțiunea dintre proceduri și funcții ca alternativă la transmiterea de argumente și returnarea valorilor [1] .

Utilizarea variabilelor globale are dezavantaje: o variabilă globală poate fi modificată în orice moment al programului (dacă nu se află în memoria protejată sau declarată ca variabilă numai în citire ), ceea ce poate afecta funcționarea altor părți ale programul [2] . Din acest motiv, variabilele globale au un potențial nelimitat de a crea dependențe reciproce, ceea ce duce la complexitatea programului. Cu toate acestea, în unele cazuri este util să folosiți variabile globale. De exemplu, ele pot fi folosite pentru a evita nevoia de a trece variabilele utilizate frecvent prin mai multe funcții. Variabilele globale fac, de asemenea, dificilă integrarea modulelor, deoarece codul scris mai devreme poate conține variabile globale cu aceleași nume ca și în modulul încorporabil.

Variabilele globale sunt utilizate pe scară largă pentru a transmite date între secțiuni de cod care nu participă la relațiile de apel, cum ar fi firele paralele de execuție sau handlere de semnal . Fără o blocare adecvată (de exemplu, cu un mutex ), codul care utilizează variabile globale nu va fi sigur pentru fire , cu excepția variabilelor doar pentru citire dintr-o zonă protejată a memoriei . Odată cu creșterea numărului de variabile și, în consecință, blocaje , probabilitatea blocajelor crește .

Exemplu în C :

int a ; /* Declararea unei variabile întregi globale „a” */ float b = 6 ; /* Declararea unei variabile globale în virgulă mobilă „b” și atribuirea valorii „6” acesteia */ int main ( void ) { a = 12 _ /* Atribuind variabilei „a” valoarea „12” */ returnează a + b ; }

Note

  1. Kernighan și Ritchie Limbajul de programare C - pp. 44, 87.
  2. William Wulf și Mary Shaw, „Global Variable Considered harmful”, ACM SIGPLAN Notices, volumul 8, numărul 2, februarie 1973, pp. 28-34.

Link -uri