Storage classes in C determine the scope, visibility, and lifetime of variables. The main storage classes are automatic, external, static, and register. Automatic variables are local to a function and destroyed when the function exits. External variables are declared outside of functions and visible throughout the program. Static variables persist for the duration of the program, while register variables attempt to store variables in CPU registers for faster access.