Variable local
# Variable local

Una variable local es, en informática, la variable a la que se le otorga un ámbito local. Tales variables sólo pueden accederse desde la función o bloque de instrucciones en donde se declaran. Las variables locales se contraponen a las variables globales.

En la mayoría de lenguajes de programación las variables locales son variables automáticas almacenadas directamente en la pila de llamadas. Esto significa que cuando una función recursiva se llama a sí misma, las variables locales reciben, en cada instancia de la función, espacio para el direccionamiento de memoria separados. De esta forma las variables con este ámbito se pueden declarar, reescribir y leer sin riesgo de efectos secundarios para los procesos fuera del bloque en el que son declarados.

Los lenguajes de programación que se sirven de la semántica llamada por valor semantics proven una subrutina llamada con su propia copia local de los argumentos que se pasan. En la mayoría de lenguajes, a estos parámetros locales se les trata igual que otras variables locales dentro de la subrutina. Por otro lado las semánticas llamada por referencia y llamada por nombre permiten que los parámetros actúen como alias de los argumentos que se pasan, permitiendo a la subrutina modificar variables al margen de su ámbito.

Algunos expertos abogan por limitarse al uso de variables locales para evitar efectos laterales en el resto del software motivados por un cambio en un módulo en particular.

## Variables locales estáticas

Las variables locales estáticas son un tipo especial de variable local disponible en muchos de los lenguajes de programación más usados, entre otros C/C++, Visual Basic y VB.NET y que permite conservar el valor de la variable hasta la próxima llamada de la función. En este caso, llamadas recursivas a la función también tienen acceso a la variable. En todos los lenguajes mencionados las variables se declaran como tales con ayuda de la palabra clave storage class (ej. static).

Las variables locales estáticas en funciones globales pueden considerarse variables globales, dado que su valor permanece en la memoria durante todo el tiempo de vida del programa. La única diferencia es que sólo pueden accederse desde una única función. Las variables locales estáticas también se pueden declarar en class-level functions en lenguajes de programación orientados a objetos.

Lenguajes orientados a objetos más estrictos y formales tales como Java y C#, no permiten la declaración de variables locales estáticas en una función. En estos lenguajes las variables "estáticas" se restringen al ámbito de la clase.

Nota: El término static tiene un significado distinto en otros lenguajes.

## Perl

Perl cuenta con el término local para “localizar” variables, pero, en este caso, local tiene una implicación diferente. Otorga un valor temporal a una variable global (paquete), que permanece hasta el final del bloque adjunto. Sin embargo, la variable es visible para cualquier función dentro del bloque.

Para crear variables léxicas que se asemejan a las variables automáticas ya mencionadas se usa el operador my.

