# Variable local

Una variable local és, en informàtica, la variable a la qual se li atorga un àmbit local . A aquestes variables només s'hi pot accedir des de la funció o bloc d'ús on es declaren. Les variables locals es contraposen a les variables globals.
En la majoria de llenguatges de programació les variables locals són variables automàtiques, emmagatzemades directament en la pila de crides. Això significa que quan una funció recursiva es crida a si mateixa, les variables locals reben, en cada instància de la funció, espai per l'adreçament de memòria separats. D'aquesta forma les variables amb aquest àmbit es poden declarar, reescriure i llegir sense risc d'efectes secundaris per als processos fora del bloc en el qual són declarats.
Els llenguatges de programació que utilitzen la semàntica crida per valor proporcionen una subrutina cridada amb la seva pròpia còpia local dels arguments que es passen. En la majoria de llenguatges, a aquests paràmetres locals se'ls tracta igual que altres variables locals dins de la subrutina. D'altra banda, les semàntiques crida per referència i crida per nom permeten que els paràmetres actuïn com a àlies dels arguments que es passen, permetent a la subrutina modificar variables al marge del seu àmbit.
Alguns experts advoquen per limitar l'ús de variables locals per evitar efectes laterals en la resta de programes motivats per un canvi en un mòdul en particular.

## Variables locals estàtiques

Les variables locals estàtiques són un tipus especial de variable local disponible en molts dels llenguatges de programació més usats, entre altres C/C++, Visual Basic i VB.NET i que permet conservar el valor de la variable fins a la pròxima crida de la funció. En aquest cas, les crides recursives a la funció també tenen accés a la variable. En tots els llenguatges esmentats les variables es declaren com a tals amb ajuda de la paraula clau storage class (ex. static ).
Les variables locals estàtiques en funcions globals poden considerar variables globals, atès que el seu valor roman en la memòria durant tot el temps d'execució del programa. L'única diferència és que només poden accedir des d'una única funció. Les variables locals estàtiques també es poden declarar a nivell de classes en llenguatges de programació orientats a objectes.
Llenguatges orientats a objectes més estrictes i formals com ara Java i C #, no permeten la declaració de variables locals estàtiques en una funció. En aquests llenguatges les variables "estàtiques" es restringeixen a l'àmbit de la classe.
Nota: el terme static té un significat diferent en altres llenguatges.

## Perl

Perl té el terme local per a "localitzar" variables, però, en aquest cas, local té una implicació diferent. Atorga un valor temporal a una variable global (paquet), que roman fins al final del bloc adjunt. No obstant això, la variable és visible per a qualsevol funció dins del bloc.
Per crear variables lèxiques que s'assemblen a les variables automàtiques ja esmentades, s'usa l'operador mi .

## Referències

* ↑ std.org/JTC1/SC22/WG14/www/docs/n1256.pdf Current C estàndard Arxivat 2017-02-20 a Wayback Machine.. En particular, vegeu la secció 6.2.4 "Storage Durations of objects", pàg. 32.
* ↑ perldoc.perl.org: local
* ↑ #Temporary-Values-via-local perldoc.perl.org: perlsub: Temporary Values via local
* ↑ #Private-Variables-via- my perldoc.perl.org: perlsub: Private Variables via mi