Variable local

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 20 de febrero de 2016; las comprobaciones requieren 13 ediciones .

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.

Organización en la memoria

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.

Restricciones

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.

Alcance

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.

Variables locales estáticas

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] .

localen Perl

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 una

esto 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]

Variables locales en Ruby

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).

Un ejemplo del uso de variables locales en C

#incluir <stdio.h> int a = 0 ; // variable global int principal () { printf ( "%d" , a ); // se mostrará el número 0 { int a = 1 ; // se declara la variable local a, la variable global a no es visible printf ( "%d" , a ); // se mostrará el número 1 { int a = 2 ; // sigue siendo una variable local en el bloque, la variable global a no está visible y la variable local anterior no está visible printf ( "%d" , a ); // se mostrará el número 2 } } }

Emitirá:

012

Notas

  1. Variables locales . Fecha de acceso: 26 de febrero de 2013. Archivado desde el original el 4 de agosto de 2013.
  2. Ejemplo 22-8. Alcance de las variables locales . Consultado el 26 de febrero de 2013. Archivado desde el original el 16 de febrero de 2013.
  3. Alfred Aho, Monica Lam, Ravi Seti, Jeffrey Ullman. 1.6.3 Ámbito estático y estructura de bloques // Compiladores : principios, técnicas y herramientas. - 2ª ed. - Williams, 2008. - S.  62 . — 1184 pág. - ISBN 978-5-8459-1349-4 .
  4. Variables locales . - "Por defecto, las variables locales se almacenan en la pila". Fecha de acceso: 26 de febrero de 2013. Archivado desde el original el 4 de agosto de 2013.
  5. 22.2.1. Las variables locales hacen posible la recursividad. . Consultado el 26 de febrero de 2013. Archivado desde el original el 16 de febrero de 2013.
  6. Variables estáticas (enlace descendente) . Fecha de acceso: 26 de febrero de 2013. Archivado desde el original el 30 de enero de 2013.