C Storage Classes
Extern
Storage class that is used to give a reference of a global variable that is visible to ALL the program files. When used, the variable cannot be initialized however, it points the variable name at a storage location that has been previously defined.
Register
Used to define local variables that should be stored in a register instead of RAM. This means that the variable has a maximum size equal to the register size (usually one word) and can't have the unary '&' operator applied to it (as it does not have a memory location).
Auto
Default storage class for all local variables.
Static
Instructs the compiler to keep a local variable in existence during the life-time of the program instead of creating and destroying it each time it comes into and goes out of scope. Therefore, making local variables static allows them to maintain their values between function calls.
