Items defined within a function are said to have no linkage. They are available only within the function and cannot be referenced from outside it: they are ``locals'' or ``local variables''. (Functions can never be local in C).
This includes the function's formal parameters (which can be treated like ordinary variables within the function) as well as definitions appearing within the function. It follows from this that the extent of such items is the function itself and, therefore, the same name can appear within any number of functions without confusion: each one refers to a separate memory location.
Variables of this kind are recreated anew whenever the definition is executed on entering the block; they are destroyed whenever the block is left. They are said to be ``automatic'' variables for that reason.
A good general rule is to use locals wherever possible because this minimises umwanted side-effects as well as name clashes.
maspjw@