internal static variables: provide private permanent storage , accessible in current function scope

external static variables: accessible in current file scope, no conflict with the same names in other source file

static functions: the same as external static variables