Content deleted Content added
Fixed a couple of misconceptions, made it slighly more general, and added some historical background. |
some fixes |
||
Line 1:
__NOTOC__
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 is the lexical context, particularly the function or block in which a variable is defined. Automatic local data is typically (in most languages) invisible outside the function or lexical context where it is defined. It is also invisible and inaccessible to a locally ''called'' function, <ref group="note">unless this function is also ''defined'' locally, along with that local data, see [[nested function]]</ref>
Automatic local variables primarily applies to recursive [[scope (programming)|lexically-scoped]] languages. Automatic local variables are normally [[Stack-based memory allocation|allocated in the stack frame]] of the procedure in which they are declared.<ref group="note">unless otherwise specified, such as static or heap-based data, which are specifiable in some languages</ref>
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.
|