12.2.1 Auto and Non-Auto Variables vs. Local and Global Variables
The terms “local” and “global” are commonly used to describe variables, but are not defined by the language standard. The term “local variable” is often taken to mean a variable which has scope inside a function and “global variable” is one which has scope throughout the entire program. However, the C language has three common scopes: block, file (i.e., internal linkage) and program (i.e., external linkage). So using only two terms to describe these can be confusing.
For example, a static
variable defined outside a
function has scope only in that file, so it is not globally accessible, but it can be
accessed by more than one function inside that file, so it is not local to any one
function either.