logo

Diferența dintre variabila locală și variabila globală

Variabilele din orice limbaj de programare au un rol crucial. Variabilele sunt clasificate în variabile globale și variabile locale în funcție de domeniul lor. Principala diferență dintre variabilele globale și locale este că variabilele globale pot fi accesate global în întregul program, în timp ce variabilele locale pot fi accesate numai în cadrul funcției sau blocului în care sunt definite. În acest subiect, vom înțelege mai întâi care sunt variabilele și domeniul de aplicare, împreună cu variabilele locale, variabilele globale și apoi diferențele dintre ambele variabile.

Variabilă locală vs variabilă globală

Ce este o variabilă?

O variabilă este un nume dat unei locații de memorie pentru a stoca valori într-un program de calculator. Este folosit pentru a stoca informații care pot fi referite și manipulate într-un program.

Putem alege orice nume pentru variabilă, dar aceasta trebuie să urmeze semantica de programare. Așa cum poate fi , a, b, x, y, z, sub, div, total, avg etc .

Să presupunem că există două valori, 10 și 20, pe care dorim să le stocăm și să le folosim în programul nostru. Pentru aceasta, trebuie să folosim o variabilă și vom face pașii de mai jos:

  • Mai întâi, vom crea sau declara o variabilă cu un nume adecvat.
  • Atribuiți acele valori variabilelor pentru a le stoca.
  • Odată ce aceste valori sunt stocate, putem folosi aceste variabile cu numele lor în programul nostru.
Variabilă locală vs variabilă globală

După cum putem vedea în imaginea de mai sus, există două sloturi de memorie, 001 și 002, și am dat nume acestor locații ca A și B. A conține 10, iar B conține 20.

converti șirul în întreg

Diferite limbaje de programare au moduri diferite de a declara variabila. De exemplu, în limbajul C, putem declara variabila în felul următor:

Sintaxă: (Sintaxă declarație variabilă în limbajul C)

scrieți json în fișierul python
 datatype v1, v2, v3,....; 

Exemplu:

 #include void main(){ int a; int b; int sum; } 

Domeniul de aplicare al variabilei

Fiecare variabilă este definită și poate fi utilizată în domeniul său de aplicare și determină în cazul în care programul această variabilă este disponibilă pentru utilizare. Domeniul de aplicare înseamnă durata de viață a acelei variabile. Înseamnă că variabila poate fi accesată sau vizibilă numai în domeniul său.

Sfera variabilelor poate fi definită prin declararea lor, iar variabilele sunt declarate în principal în două moduri:

    Variabila globala:În afara tuturor funcțiilorVariabila locala:În cadrul unui bloc funcțional:

Ce este o variabilă globală?

  • Variabilele globale sunt acele variabile care sunt declarate în afara tuturor funcțiilor sau blocului și pot fi accesate global într-un program.
  • Poate fi accesat de orice funcție prezentă în program.
  • Odată ce declarăm o variabilă globală, valoarea acesteia poate fi variată așa cum este utilizată cu diferite funcții.
  • Durata de viață a variabilei globale există până la executarea programului. Aceste variabile sunt stocate în locații fixe de memorie date de compilator și nu se curăță automat.
  • Variabilele globale sunt utilizate mai ales în programare și sunt utile pentru cazurile în care toate funcțiile trebuie să acceseze aceleași date.

Exemplu:

 #include int a=50, b=40; void main() { printf('a = %d and b=%d',a,b); } 

În exemplul de mai sus, a și b sunt variabilele globale.

Avantajele variabilei globale

  • Variabilele globale pot fi accesate de către toate funcțiile prezente în program.
  • Este necesară doar o singură declarație.
  • Foarte util dacă toate funcțiile accesează aceleași date.

Dezavantajele variabilei globale

  • Valoarea unei variabile globale poate fi schimbată accidental, deoarece poate fi utilizată de orice funcție din program.
  • Dacă folosim un număr mare de variabile globale, atunci există o șansă mare de generare a erorilor în program.

Ce este o variabilă locală?

    Variabilele care sunt declarate în sau în interiorul unui bloc funcțional sunt cunoscute ca variabile locale.
  • Aceste variabile pot fi accesate numai în cadrul funcției în care sunt declarate.
  • Durata de viață a variabilei locale este doar în cadrul funcției sale, ceea ce înseamnă că variabila există până când funcția se execută. Odată ce execuția funcției este finalizată, variabilele locale sunt distruse și nu mai există în afara funcției.
  • Motivul pentru domeniul limitat al variabilelor locale este că variabilele locale sunt stocate în stivă, care este de natură dinamică și curăță automat datele stocate în acesta.
  • Dar făcând variabila statică cu cuvântul cheie „static”, putem păstra valoarea variabilei locale.

Exemplu:

 #include void main() { int x=50, y=40; printf('x = %d and y=%d',x, y); } 

În exemplul de mai sus, am declarat x și y două variabile în interiorul funcției principale. Prin urmare, acestea sunt variabile locale.

Avantajele variabilei locale

  • Același nume al unei variabile locale poate fi folosit în diferite funcții, deoarece este recunoscut doar de funcția în care este declarată.
  • Variabilele locale folosesc memoria doar pentru timpul limitat în care funcția este executată; după aceea aceeași locație de memorie poate fi reutilizată.

Dezavantajele variabilelor locale

  • Sfera variabilei locale este limitată doar la funcția sa și nu poate fi utilizată de alte funcții.
  • Partajarea datelor de către variabila locală nu este permisă.

Diagramă de comparație între variabila globală și variabila locală

Variabilă globală Variabila locala
Variabilele globale sunt declarate în afara tuturor blocurilor funcționale. Variabilele locale sunt declarate în cadrul unui bloc funcțional.
Domeniul de aplicare rămâne pe tot parcursul programului. Domeniul de aplicare este limitat și rămâne în cadrul funcției doar în care sunt declarate.
Orice modificare a variabilei globale afectează întregul program, oriunde este utilizat. Orice modificare a variabilei locale nu afectează alte funcții ale programului.
O variabilă globală există în program pentru tot timpul în care programul este executat. O variabilă locală este creată atunci când funcția este executată, iar odată ce execuția este terminată, variabila este distrusă.
Acesta poate fi accesat pe tot parcursul programului de către toate funcțiile prezente în program. Poate fi accesat doar de instrucțiunile de funcție în care este declarat și nu de celelalte funcții.
Dacă variabila globală nu este inițializată, aceasta ia zero în mod implicit. Dacă variabila locală nu este inițializată, aceasta ia implicit valoarea de gunoi.
Variabilele globale sunt stocate în segmentul de date din memorie. Variabilele locale sunt stocate într-o stivă în memorie.
Nu putem declara multe variabile cu același nume. Putem declara diverse variabile cu același nume dar în alte funcții.

Exemple pentru a înțelege diferențele dintre variabila locală și globală

Acum să înțelegem exemple în diferite limbaje de programare pentru a înțelege mai bine diferența dintre variabilele locale și globale.

rdbms

Local vs Global în C

Exemplul-1:

 #include // Global variables int a; int b; int Add() { return a + b; } int Mul() { int c=10; //Local Variable int d=20; ////Local Variable return c*d; } void main() { int Ans1, Ans2, c=30;// Local variable a = 50; b = 70; Ans1 = Add(); Ans2= Mul(); printf('The addition result is: %d
',Ans1); printf('The Multiplication result is: %d
',Ans2); printf('%d
', c); } 

Ieșire:

matrice în metodele java
 The addition result is: 120 The Multiplication result is: 200 30 

După cum putem vedea în programul de mai sus, am luat A și b variabile globale care sunt accesate în diferite funcții, cum ar fi Add() și main(). În timp ce există și variabile locale precum c, d, Ans1 și Ans2, care sunt accesate de acele funcții numai în care sunt declarate.

Dacă încercăm să folosim variabile c și d în afara funcției Mul(), acestea vor fi folosite ca variabile noi. După cum am arătat luând c și în funcția main(), acesta este tratat ca o nouă variabilă.

Local vs. Global în Python

Exemplul-1:

 v1 = 'Hey, I am Global Variable!, I can be used everywhere in the program.' #globalvariable def func1(): v2='Hey, I am Local Variable!, I can be used within this block only in the program.' #localvariable print(v2) func1() #calling func1 def func2(): print(v1) func2() #callin func2 

Ieșire:

 Hey, I am a Local Variable!, I can be used within this block only in the program. Hey, I am Global Variable!, I can be used everywhere in the program. 

În programul de mai sus, am luat o variabilă globală v1 și o variabilă locală v2. Deoarece v1 este global, poate fi accesat cu ușurință în orice funcție, iar v2 este local; este utilizat numai în cadrul funcției sale declarate. Dar dacă încercăm să folosim v1 în func1, va da o eroare. Să vedem exemplul de mai jos:

Exemplul-2

 v1 = 'Hey, I am Global Variable!, I can be used everywhere in the program.' #globalvariable def func1(): v2='Hey, I am Local Variable!, I can be used within this block only in the program.' #localvariable print(v2) print(v1) func1() #calling func1 def func2(): print(v1) print(v2) func2() #callin func2 

Dacă încercăm să accesăm v1, acesta poate fi accesat cu ușurință în fun1 și func2. Dar dacă încercăm să accesăm v2 în afara funcției sale, ceea ce înseamnă în func2, va da eroarea de rulare. Vom obține rezultatul de mai jos după ce executăm codul de mai sus:

Eroare de rulare:

repl în java
 NameError: global name 'v2' is not defined 

Ieșire:

 Hey, I am Local Variable!, I can be used within this block only in the program. Hey, I am Global Variable!, I can be used everywhere in the program. Hey, I am Global Variable!, I can be used everywhere in the program. 

Local vs. Variabilă globală în Java

În Java, nu există un concept de variabile globale; întrucât Java este un limbaj de programare orientat pe obiecte, totul este o parte a clasei. Dar dacă dorim să facem o variabilă accesibilă la nivel global, o putem face statică utilizând a static Cuvânt cheie.

 class Demo { // static variable static int a = 10; // non-static or local variable int b = 20; } public class Main { public static void main(String[] args) { Demo obj = new Demo(); // accessing the non-static variable System.out.println('Value of non-static variable is: ' + (obj.b)); // accessing the static variable System.out.println('Value of static variable is:' + (Demo.a)); } } 

Ieșire:

 Value of non-static variable is: 20 Value of static variable is:10 

În programul de mai sus, am folosit o variabilă locală sau o variabilă non-statică și o variabilă statică. Variabila locală poate fi accesată utilizând obiectul clasei Demo, în timp ce variabila statică poate fi accesată folosind numele clasei.