In C, the scope and lifetime of a variable or function within a program is determined by its storage class. Each variable has a lifetime, or the context in which they store their value. Functions, along with variables, also exist within a particular scope, or visibility, which dictates which parts of a program know about and can access them.
C Storage Classes

A good overview of when, where, and why to use static and extern, but probably not auto or register when using Objective-C. Particularly helpful for Core Audio development.