Storage classes in C determine where variables are stored in memory and their scope. The main storage classes are automatic, static, external, and register. Automatic variables are declared within a function and exist only during its execution. Static variables retain their value between function calls. External variables have global scope and exist throughout program execution. Register variables are stored in processor registers for faster access but only a limited number can be register variables.