Identifiers for variables and constants declared at file scope have external linkage (i.e. visible in other translation units).
Both are initialized to zero for variables and NULL for pointers by default, and exist for all the lifetime of the program.
- A variable declared inside a function that keeps its value between invocations (as if it were global), and so is initialized only once.
- Function or variable is only visible (callable) within the same
*.c
file it was defined into (limited scope => optimalperformance
).