Content deleted Content added
m tags and general fixes, removed stub tag using AWB (8842) |
Patar knight (talk | contribs) Adding local short description: "Local variable in computer programming", overriding Wikidata description "stack-allocated variable that is automatically deallocated upon leaving the scope in which it was declared" |
||
(44 intermediate revisions by 36 users not shown) | |||
Line 1:
{{Short description|Local variable in computer programming}}
{{About|Automatic variables|the C++ keyword {{Cpp|auto}} used for [[type inference]]|C++11#Type inference}}
In [[computer programming]], an '''automatic variable''' is a local [[Variable (programming)|variable]] which is allocated and deallocated automatically when program flow enters and leaves the variable's scope. The [[Scope (computer science)|scope]] is the lexical context, particularly the function or block in which a variable is defined. Local data is typically (in most languages) invisible outside the function or lexical context where it is defined. Local data is also invisible and inaccessible to a ''called'' function,<ref group="note">unless it is a [[nested function]], which itself is ''defined'' along that local data</ref> but is not deallocated, coming back in scope as the [[execution thread]] returns to the caller.
Automatic local variables
The term ''[[local variable]]'' is usually synonymous with automatic variable, since these are the same thing in many programming languages, but local is more general – most local variables are automatic local variables, but [[static local variable]]s also exist, notably in C. For a static local variable, the allocation is static (the lifetime is the entire program execution), not automatic, but it is only in scope during the execution of the function.
==In specific programming languages==
▲=== C, C++ ===
(Called ''automatic'' variables.)
All variables declared within a [[block (programming)|block]] of code are automatic by default
In [[C++]], the constructor of automatic variables is called when the execution reaches the place of declaration.
Since C++11, C++ allows variables to be declared with the <code>auto</code> type specifier,<ref>{{citation| url=http://en.cppreference.com/w/cpp/language/auto| title=Placeholder type specifiers| website=cppreference.com}}</ref> but this means that the variable's type is [[type inference|inferred]], and does not refer to the scope of the variable.
===Java===
(Called ''local variables''.)
Similar to C and C++, but there is no <code>auto</code> or <code>register</code> keyword. However, the Java compiler will not allow the usage of a not-explicitly-initialized local variable and will give a compilation error (unlike C and C++ where the compiler will usually only give a warning). The Java standard demands that every local variable must be explicitly initialized before being used.<ref>{{cite web | url=http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.12.5 | title=4.12.5 Initial Values of Variables | publisher=Sun Microsystems |
===Perl===
(Called ''lexical'', ''my'' or ''private'' variables.)
In Perl, local variables are declared using the <code>my</code> operator. Uninitialized scalars will have the value <code>undef</code>; uninitialized arrays or hashes will be <code>()</code>.<ref>{{cite web | url=http://perldoc.perl.org/perlsub.html#Private-Variables-via-my() | title=Private variables via my() - perlsub - perldoc.perl.org |
Perl also has a <code>[[Local variable|local]]</code> operator that does not create automatic variables,<ref>{{cite web | url=http://perldoc.perl.org/perlsub.html#Temporary-Values-via-local%28%29 | title=Temporary values via local() - perlsub - perldoc.perl.org |
==See also==
*[[C syntax#Storage class specifiers]]
▲* [[C syntax#Storage duration specifiers]]
*[[Call stack]]
▲* [[Variable-length array]] ([[C99]] new feature)
*[[Object lifetime]]
==Notes==
{{
==References==
{{Reflist}}
{{DEFAULTSORT:Automatic Variable}}
{{Memory management}}
[[Category:Memory management]]
[[Category:Variable (computer
[[es:Asignación automática de memoria]]
[[de:Automatische Variable]]
|