logo

Diferencia entre variable local y variable global

Las variables en cualquier lenguaje de programación tienen un papel crucial. Las variables se clasifican en variables globales y variables locales según su alcance. La principal diferencia entre las variables globales y locales es que se puede acceder a las variables globales globalmente en todo el programa, mientras que a las variables locales solo se puede acceder dentro de la función o bloque en el que están definidas. En este tema, primero entenderemos cuáles son las variables y el alcance, junto con las variables locales, las variables globales y luego las diferencias entre ambas variables.

Variable local versus variable global

¿Qué es una variable?

Una variable es un nombre que se le da a una ubicación de memoria para almacenar valores en un programa de computadora. Se utiliza para almacenar información a la que se puede hacer referencia y manipular en un programa.

Podemos elegir cualquier nombre para la variable, pero debe seguir la semántica de programación. Como puede ser , a, b, x, y, z, sub, div, total, avg, etc .

¿Qué es una pila de Java?

Digamos que hay dos valores, 10 y 20, que queremos almacenar y usar en nuestro programa. Para esto, necesitamos usar una variable y realizaremos los pasos a continuación:

  • Primero, crearemos o declararemos una variable con un nombre adecuado.
  • Asigne esos valores a las variables para almacenarlos.
  • Una vez almacenados estos valores, podemos usar estas variables con su nombre en nuestro programa.
Variable local versus variable global

Como podemos ver en la imagen de arriba, hay dos ranuras de memoria, 001 y 002, y les hemos dado nombres a estas ubicaciones como A y B. A contiene 10 y B contiene 20.

Los diferentes lenguajes de programación tienen diferentes formas de declarar la variable. Por ejemplo, en lenguaje C, podemos declarar la variable de la siguiente manera:

Sintaxis: (Sintaxis de declaración de variables en lenguaje C)

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

Ejemplo:

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

Alcance de la variable

Cada variable está definida y se puede utilizar dentro de su alcance y determina en qué parte del programa esta variable está disponible para su uso. El alcance significa la vida útil de esa variable. Significa que solo se puede acceder a la variable o ser visible dentro de su alcance.

El alcance de las variables se puede definir con su declaración, y las variables se declaran principalmente de dos maneras:

    Variable global:Fuera de todas las funcionesVariable local:Dentro de un bloque de funciones:

¿Qué es una variable global?

  • Las variables globales son aquellas variables que se declaran fuera de todas las funciones o bloques y a las que se puede acceder globalmente en un programa.
  • Se puede acceder a él mediante cualquier función presente en el programa.
  • Una vez que declaramos una variable global, su valor se puede variar según se use con diferentes funciones.
  • La vida útil de la variable global existe hasta que se ejecuta el programa. Estas variables se almacenan en ubicaciones de memoria fijas proporcionadas por el compilador y no se limpian automáticamente.
  • Las variables globales se utilizan principalmente en programación y son útiles para casos en los que todas las funciones necesitan acceder a los mismos datos.

Ejemplo:

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

En el ejemplo anterior, a y b son las variables globales.

clase abstracta vs interfaz

Ventajas de la variable global

  • Se puede acceder a las variables globales mediante todas las funciones presentes en el programa.
  • Sólo se requiere una única declaración.
  • Muy útil si todas las funciones acceden a los mismos datos.

Desventajas de la variable global

  • El valor de una variable global se puede cambiar accidentalmente ya que puede ser utilizado por cualquier función del programa.
  • Si utilizamos una gran cantidad de variables globales, existe una alta probabilidad de que se generen errores en el programa.

¿Qué es una variable local?

    Las variables que se declaran dentro o dentro de un bloque de funciones se conocen como variables locales.
  • Solo se puede acceder a estas variables dentro de la función en la que están declaradas.
  • La vida útil de la variable local está dentro de su función únicamente, lo que significa que la variable existe hasta que se ejecuta la función. Una vez que se completa la ejecución de la función, las variables locales se destruyen y ya no existen fuera de la función.
  • La razón del alcance limitado de las variables locales es que las variables locales se almacenan en la pila, que es de naturaleza dinámica y limpia automáticamente los datos almacenados en ella.
  • Pero al hacer que la variable sea estática con la palabra clave 'estática', podemos conservar el valor de la variable local.

Ejemplo:

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

En el ejemplo anterior, hemos declarado xey dos variables dentro de la función principal. Por tanto, estas son variables locales.

Ventajas de la variable local

  • El mismo nombre de una variable local se puede utilizar en diferentes funciones ya que sólo es reconocido por la función en la que está declarada.
  • Las variables locales usan memoria solo durante el tiempo limitado en que se ejecuta la función; después de esa misma ubicación de memoria se puede reutilizar.

Desventajas de las variables locales

  • El alcance de la variable local se limita únicamente a su función y no puede ser utilizado por otras funciones.
  • No se permite compartir datos mediante la variable local.

Cuadro comparativo entre variable global y variable local

Variable global Variable local
Las variables globales se declaran fuera de todos los bloques de funciones. Las variables locales se declaran dentro de un bloque de funciones.
El alcance se mantiene durante todo el programa. El alcance es limitado y permanece dentro de la función únicamente en la que se declaran.
Cualquier cambio en la variable global afecta a todo el programa, dondequiera que se utilice. Cualquier cambio en la variable local no afecta otras funciones del programa.
Una variable global existe en el programa durante todo el tiempo que se ejecuta el programa. Se crea una variable local cuando se ejecuta la función y una vez finalizada la ejecución, la variable se destruye.
Se puede acceder a él desde todo el programa mediante todas las funciones presentes en el programa. Solo se puede acceder a él mediante las declaraciones de función en las que está declarado y no mediante las otras funciones.
Si la variable global no se inicializa, toma cero de forma predeterminada. Si la variable local no se inicializa, toma el valor basura de forma predeterminada.
Las variables globales se almacenan en el segmento de datos de la memoria. Las variables locales se almacenan en una pila en la memoria.
No podemos declarar muchas variables con el mismo nombre. Podemos declarar varias variables con el mismo nombre pero en otras funciones.

Ejemplos para comprender las diferencias entre variable local y global

Ahora comprendamos ejemplos en diferentes lenguajes de programación para comprender mejor la diferencia entre variables locales y globales.

Local versus global en C

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

Producción:

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

Como podemos ver en el programa anterior, hemos tomado a y b Variables globales a las que se accede en diferentes funciones como Add() y main(). Mientras que también hay variables locales como c, d, Ans1 y Ans2, a las que acceden aquellas funciones solo en las que están declaradas.

Si intentamos utilizar variables cyd fuera de la función Mul(), se utilizarán como nuevas variables. Como hemos demostrado al tomar c en la función main() también, se trata como una nueva variable.

Locales vs. Global en Python

Ejemplo 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 

Producción:

ordenar una matriz en java
 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. 

En el programa anterior, hemos tomado una variable global v1 y una variable local v2. Dado que v1 es global, se puede acceder fácilmente a él desde cualquier función y v2 es local; se utiliza sólo dentro de su función declarada. Pero si intentamos usar v1 en func1, dará un error. Veamos el siguiente ejemplo:

Ejemplo-2

orden sql por fecha
 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 intentamos acceder a v1, se puede acceder fácilmente en fun1 y func2. Pero si intentamos acceder a v2 fuera de su función, es decir, en func2, dará un error de tiempo de ejecución. Obtendremos el siguiente resultado después de ejecutar el código anterior:

Error de tiempo de ejecución:

 NameError: global name 'v2' is not defined 

Producción:

 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. 

Locales vs. Variables globales en Java

En Java, no existe el concepto de variables globales; Dado que Java es un lenguaje de programación orientado a objetos, todo es parte de la Clase. Pero si queremos que una variable sea accesible globalmente, podemos hacerla estática usando un estático Palabra clave.

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

Producción:

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

En el programa anterior, hemos utilizado una variable local o variable no estática y una variable estática. Se puede acceder a la variable local utilizando el objeto de la clase Demo, mientras que a la variable estática se puede acceder utilizando el nombre de la clase.