I programmering är en lokal variabel en variabel som deklareras inom ett kodblock. Omfattningen av en lokal variabel börjar vid punkten för dess deklaration och slutar i slutet av detta block [1] [2] . Till exempel, i C är variabler som deklareras inuti en funktion eller ett block lokala (i C avgränsas block av klammerparenteser { och }) [3] .
Det finns programmeringsspråk där en lokal variabel bara kan deklareras i en funktion, eftersom i dessa språk en lokal variabel som deklareras i ett block deklareras i funktionen för den omedelbara platsen för detta block.
Lokala variabler lagras i samtalsstacken på de flesta språk [4] . Detta innebär att om en funktion anropar sig själv rekursivt, så återskapas variablerna varje gång och tilldelas personligt minne, istället för att skrivas till samma plats.
En lokal variabel begränsas endast av mängden minne som tilldelats av operativsystemet eller datorn för stacken.
Algolliknande språk låter dig ordna godtyckligt stora kapslingar av block, och var och en kommer att ha sina egna lokala variabler.
Lokala variabler möjliggör rekursion [5] .
Lokala scope-variabler används för att undvika biverkningsproblem som kan uppstå med globala variabler.
Programmeringsspråk som använder call by value ger varje subrutin ett lokalt omfång av lokala variabler med en lokal kopia av argumenten som skickas till den.
En lokal variabel är en funktionsparameter (till exempel i C-språket) som inte använder referenser eller pekare.
Statiska variabler är en speciell typ av lokala variabler tillgängliga på många populära språk (inklusive c/c++, Visual Basic, VB.NET), vars essens är att denna variabel behåller sitt värde i varje funktionsanrop. Och i varje samtal kommer det att vara exakt samma som det var när du stängde kroppen av denna funktion innan [6] .
Perl har ett nyckelord, local, för att "lokalisera" variabler, men i det här fallet localbetyder det inte vad de flesta skulle förvänta sig att det skulle betyda. [2] Den skapar en temporär variabel med en begränsad livslängd, men placerad i det globala namnområdet. Detta gör att du kan se denna variabel i vilken funktion som helst som anropas från detta block. För att skapa lexikaliska variabler, som är mer som automatiska variabler, använd my. För att förstå hur detta fungerar, överväg följande kod:
$a = 1 ; sub f () { local $a ; $a = 2 ; g (); } sub g () { print "$a\n" ; } g (); f (); g ();Resultat:
ett 2 ettdetta händer med ett globalt variabelnamn $asom börjar peka på en ny temporär variabel som skapats i funktionen f(), men det globala värdet återställs när du lämnar f(). Använd myi det här fallet istället localskulle skriva ut 1 tre gånger, eftersom variabeln i så fall $averkligen skulle vara lokal för funktionen f()och inte ses g(). Av den anledningen anser många att operatören localborde ha ett annat namn, som save. [5]
Ruby som språk var också inspirerat av Perl, men i det här fallet gjordes notationen enklare: namnet på en global variabel måste föregås av ett $-tecken, till exempel $variabelnamn, medan en lokal variabel helt enkelt inte har en $ tecken framför namnet, till exempel variabelnamn (i medan i Perl har alla skalära värden en $ framför).
Kommer utfärda:
012