Initialization of static variables
You initialize a static object with a constant
expression, or an expression that reduces to the address of a previously
declared extern or static object,
possibly modified by a constant expression. If you do not explicitly
initialize a static (or external) variable, it will
have a value of zero of the appropriate type, unless it is a pointer,
in which case it will be initialized to NULL.
A static variable in a block is initialized only
one time, prior to program execution, whereas an auto variable
that has an initializer is initialized every time it comes into existence.
A
static object of class type will use the default constructor if you
do not initialize it. Automatic and register variables that are not
initialized will have undefined values.