There are 4 storage class specifiers in C - auto, extern, static, and register - that determine where a variable is stored in memory and the scope and lifetime of the variable. Auto variables are stored in CPU memory and last within the function, extern variables can be defined anywhere but last till the end of the program, static variables retain their value between function calls and are stored in CPU memory, and register variables are stored in register memory and also last within the function but access the fastest.