logo

Diferència entre variable local i variable global

Les variables en qualsevol llenguatge de programació tenen un paper crucial. Les variables es classifiquen en variables globals i variables locals en funció del seu abast. La diferència principal entre les variables globals i locals és que es pot accedir a les variables globals de manera global a tot el programa, mentre que només es pot accedir a les variables locals dins de la funció o bloc en què es defineixen. En aquest tema, primer entendrem quines són les variables i l'abast, juntament amb les variables locals, les variables globals i després les diferències entre ambdues variables.

Variable local vs variable global

Què és una variable?

Una variable és un nom donat a una ubicació de memòria per emmagatzemar valors en un programa informàtic. S'utilitza per emmagatzemar informació que es pot fer referència i manipular en un programa.

Podem triar qualsevol nom per a la variable, però ha de seguir la semàntica de programació. Tal com pot ser , a, b, x, y, z, sub, div, total, avg, etc .

aplicacions amagades en aquest dispositiu

Suposem que hi ha dos valors, 10 i 20, que volem emmagatzemar i utilitzar al nostre programa. Per a això, hem d'utilitzar una variable i farem els passos següents:

  • Primer, crearem o declararem una variable amb un nom adequat.
  • Assigna aquests valors a les variables per emmagatzemar-los.
  • Un cop aquests valors són emmagatzemats, podem utilitzar aquestes variables amb el seu nom al nostre programa.
Variable local vs variable global

Com podem veure a la imatge de dalt, hi ha dues ranures de memòria, 001 i 002, i hem donat noms a aquestes ubicacions com A i B. A conté 10 i B en conté 20.

Els diferents llenguatges de programació tenen diferents maneres de declarar la variable. Per exemple, en llenguatge C, podem declarar la variable de la manera següent:

Sintaxi: (sintaxi de declaració de variables en llenguatge C)

 datatype v1, v2, v3,....; 

Exemple:

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

Àmbit de la variable

Cada variable es defineix i es pot utilitzar dins del seu abast i determina que en el programa es pot utilitzar aquesta variable. L'abast significa la vida útil d'aquesta variable. Vol dir que només es pot accedir o veure la variable dins del seu abast.

L'abast de les variables es pot definir amb la seva declaració, i les variables es declaren principalment de dues maneres:

    Variable global:Fora de totes les funcionsVariable local:Dins d'un bloc de funcions:

Què és una variable global?

  • Les variables globals són aquelles variables que es declaren fora de totes les funcions o blocs i es pot accedir globalment en un programa.
  • S'hi pot accedir des de qualsevol funció present al programa.
  • Un cop declarem una variable global, el seu valor es pot variar tal com s'utilitza amb diferents funcions.
  • La vida útil de la variable global existeix fins que s'executa el programa. Aquestes variables s'emmagatzemen en ubicacions de memòria fixes donades pel compilador i no es netegen automàticament.
  • Les variables globals s'utilitzen principalment en programació i són útils per als casos en què totes les funcions necessiten accedir a les mateixes dades.

Exemple:

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

A l'exemple anterior, a i b són les variables globals.

cadena de matriu c

Avantatges de la variable global

  • Totes les funcions presents al programa poden accedir a les variables globals.
  • Només cal una única declaració.
  • Molt útil si totes les funcions accedeixen a les mateixes dades.

Inconvenients de la variable global

  • El valor d'una variable global es pot canviar accidentalment, ja que pot ser utilitzat per qualsevol funció del programa.
  • Si fem servir un gran nombre de variables globals, hi ha una gran probabilitat de generació d'errors al programa.

Què és una variable local?

    Les variables que es declaren dins o dins d'un bloc de funcions es coneixen com a variables locals.
  • Només es pot accedir a aquestes variables dins de la funció en què es declaren.
  • La vida útil de la variable local només es troba dins de la seva funció, el que significa que la variable existeix fins que s'executa la funció. Un cop finalitzada l'execució de la funció, les variables locals es destrueixen i ja no existeixen fora de la funció.
  • La raó de l'abast limitat de les variables locals és que les variables locals s'emmagatzemen a la pila, que és de naturalesa dinàmica i neteja automàticament les dades emmagatzemades dins d'ella.
  • Però fent que la variable estigui estàtica amb la paraula clau 'estàtica', podem retenir el valor de la variable local.

Exemple:

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

A l'exemple anterior, hem declarat x i y dues variables dins de la funció principal. Per tant, aquestes són variables locals.

Avantatges de la variable local

  • El mateix nom d'una variable local es pot utilitzar en diferents funcions ja que només es reconeix per la funció en què es declara.
  • Les variables locals utilitzen la memòria només durant el temps limitat quan s'executa la funció; després d'aquesta mateixa ubicació de memòria es pot reutilitzar.

Inconvenients de les variables locals

  • L'abast de la variable local només es limita a la seva funció i no pot ser utilitzat per altres funcions.
  • No es permet l'intercanvi de dades per part de la variable local.

Gràfic de comparació entre variable global i variable local

Variable global Variable local
Les variables globals es declaren fora de tots els blocs de funció. Les variables locals es declaren dins d'un bloc de funcions.
L'abast es manté durant tot el programa. L'abast és limitat i només roman dins de la funció en què es declaren.
Qualsevol canvi en la variable global afecta tot el programa, sigui on s'utilitzi. Qualsevol canvi en la variable local no afecta altres funcions del programa.
Hi ha una variable global al programa durant tot el temps que s'executa el programa. Es crea una variable local quan s'executa la funció, i un cop finalitzada l'execució, la variable es destrueix.
S'hi pot accedir durant tot el programa per totes les funcions presents al programa. Només s'hi pot accedir amb les declaracions de funció en què es declara i no per les altres funcions.
Si la variable global no està inicialitzada, pren zero per defecte. Si la variable local no està inicialitzada, pren el valor d'escombraries per defecte.
Les variables globals s'emmagatzemen al segment de dades de la memòria. Les variables locals s'emmagatzemen en una pila a la memòria.
No podem declarar moltes variables amb el mateix nom. Podem declarar diverses variables amb el mateix nom però en altres funcions.

Exemples per entendre les diferències entre la variable local i global

Ara anem a entendre exemples en diferents llenguatges de programació per entendre millor la diferència entre variables locals i globals.

Local vs global a C

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

Sortida:

 The addition result is: 120 The Multiplication result is: 200 30 

Com podem veure en el programa anterior, hem pres a i b variables globals a les quals s'accedeix en diferents funcions com ara Add() i main(). Mentre que també hi ha variables locals com c, d, Ans1 i Ans2, a les quals només accedeixen aquelles funcions en què es declaren.

Si intentem utilitzar variables c i d fora de la funció Mul(), s'utilitzaran com a variables noves. Com hem demostrat prenent c a la funció main() també, es tracta com una nova variable.

Local vs. Global a Python

Exemple-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 

Sortida:

matriu java de cadena
 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. 

Al programa anterior, hem pres una variable global v1 i una variable local v2. Com que v1 és global, es pot accedir fàcilment a qualsevol funció, i v2 és local; només s'utilitza dins de la seva funció declarada. Però si intentem utilitzar v1 a func1, donarà un error. Vegem l'exemple següent:

Exemple-2

flux de filtre java
 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 

Si intentem accedir a v1, es pot accedir fàcilment a fun1 i func2. Però si intentem accedir a v2 fora de la seva funció, és a dir, a func2, donarà l'error d'execució. Tindrem la sortida següent després d'executar el codi anterior:

Error d'execució:

 NameError: global name 'v2' is not defined 

Sortida:

 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. Variable global en Java

A Java, no hi ha cap concepte de variables globals; ja que Java és un llenguatge de programació orientat a objectes, tot forma part de la classe. Però si volem fer una variable accessible globalment, podem fer-la estàtica utilitzant a estàtica Paraula clau.

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

Sortida:

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

En el programa anterior, hem utilitzat una variable local o variable no estàtica i una variable estàtica. Es pot accedir a la variable local utilitzant l'objecte de la classe Demo, mentre que a la variable estàtica es pot accedir mitjançant el nom de la classe.