5.4.2.1.2 Static Objects
All static objects have static storage duration, even
local static objects, defined inside a function and which have a scope
limited to that function. Even local static objects can be referenced by a
pointer and are guaranteed to retain their value between calls to the function in which
they are defined, unless explicitly modified via a pointer.
Objects that are static only have their initial value
assigned once during the program’s execution. Thus, they generate more efficient code than
initialized auto objects, which are assigned a value every time the block
in which they are defined begins execution. Unlike auto objects, however,
initializers for static objects must be constant expressions.
All static variables that are also specified as
const will be stored in program memory.
