Storage classes are used to define scope and life time of a variable. There are four storage classes in C programming.
Storage Classes | Storage Place | Default Value | Scope | Lifetime |
auto | RAM | Garbage Value | Local | Within function |
extern | RAM | Zero | Global | Till the end of main program, May be declared anywhere in the program |
static | RAM | Zero | Local | Till the end of main program, Retains value between multiple functions call |
register | Register | Garbage Value | Local | Within function |
1)auto
The auto keyword is applied to all local variables automatically. It is the default storage class that is why it is known as automatic variable.
Example
#include<stdio.h> int main() { int a=10; auto int b=10;//same like above printf("%d %d",a,b); return 0; }
10 10
2)register
The register variable allocates memory in register than RAM. Its size is same of register size. It has a faster access than other variables.It is recommended to use register variable only for quick access such as in counter.
Example
int counter=0;
The static variable is initialized only once and exists till the end of the program. It retains its value between multiple functions call.The static variable has the default value 0 which is provided by compiler.
#include<stdio.h> int func() { static int i=0;//static variable int j=0;//local variable i++; j++; printf("i= %d and j= %d ", i, j); } int main() { func(); func(); func(); return 0; }
i= 1 and j= 1 i= 2 and j= 1 i= 3 and j= 1
The extern variable is visible to all the programs. It is used if two or more files are sharing same variable or function.