En programación, una variable local es una variable declarada dentro de un bloque de código. El alcance de una variable local comienza en el punto de su declaración y termina al final de este bloque [1] [2] . Por ejemplo, en C , las variables declaradas dentro de una función o bloque son locales (en C, los bloques están delimitados por llaves { y }) [3] .
Hay lenguajes de programación en los que una variable local solo se puede declarar en una función, ya que en estos lenguajes una variable local declarada en un bloque se declara en función de la ubicación inmediata de este bloque.
Las variables locales se almacenan en la pila de llamadas en la mayoría de los idiomas [4] . Esto significa que si una función se llama a sí misma recursivamente, las variables se vuelven a crear cada vez y se asignan a la memoria personal, en lugar de escribirse en el mismo lugar.
Una variable local solo está limitada por la cantidad de memoria asignada por el sistema operativo o la computadora para la pila.
Los lenguajes similares a Algol le permiten organizar anidamientos de bloques arbitrariamente grandes, y cada uno tendrá sus propias variables locales.
Las variables locales hacen posible la recursividad [5] .
Las variables de ámbito local se utilizan para evitar los problemas de efectos secundarios que pueden ocurrir con las variables globales.
Los lenguajes de programación que usan llamada por valor dan a cada subrutina un alcance local de variables locales con una copia local de los argumentos que se le pasan.
Una variable local es cualquier parámetro de función (por ejemplo, en lenguaje C) que no utiliza referencias ni punteros.
Las variables estáticas son un tipo especial de variables locales disponibles en muchos lenguajes populares (incluidos c / c ++, Visual Basic, VB.NET), cuya esencia es que esta variable conserva su valor en cada llamada de función. Y en cada llamada, será exactamente igual que cuando se cerró el cuerpo de esta función antes [6] .
Perl tiene una palabra clave, local, para "localizar" variables, pero en este caso, localno significa lo que la mayoría de la gente esperaría que significara. [2] Crea una variable temporal con una duración limitada, pero ubicada en el espacio de nombres global. Esto le permite ver esta variable en cualquier función llamada desde este bloque. Para crear variables léxicas, que son más como variables automáticas, use el my. Para entender cómo funciona esto, considere el siguiente código:
$a = 1 ; sub f () { local $a ; $a = 2 ; gramo (); } sub g () { imprime "$a\n" ; } gramo (); f (); gramo ();Resultado:
una 2 unaesto sucede con un nombre de variable global $aque comienza apuntando a una nueva variable temporal creada en la función f(), pero el valor global se restaura al salir de f(). Usar myen este caso localimprimiría 1 tres veces, ya que en ese caso la variable $asería local a la función f()y no se vería g(). Por esta razón, muchos creen que el operador localdebería tener un nombre diferente, como save. [5]
Ruby como lenguaje también se inspiró en Perl, pero en este caso, la notación se simplificó: el nombre de una variable global debe estar precedido por un signo $, por ejemplo, $nombre_variable, mientras que una variable local simplemente no tiene un $ firme delante de su nombre, por ejemplo, variable_name (mientras que en Perl todos los valores escalares tienen un $ delante).
Emitirá:
012