The declaration of a variable of a new storage class from within a
function creates a shared variable and a local variable. The shared
variable may be a hidden (private) global variable and the local variable
may be a hidden (private) local variable. The shared variable has a
modified global scope and is callable only from within a function. The
local variable is visible only from within the function in which it is
defined. References to the variable from within a function result in the
value of the shared variable being returned. The value of the shared
variable is the value most recently assigned to the variable by an active
caller of the function. Upon entering a function referencing the
variable, the value of the shared variable is given to the local
variable. When the function returns, the value of the local variable is
assigned back to the shared variable.