Storage classes are used to define scope and life time of a variable. There are four storage classes in C programming.
auto
extern
static
register
Storage Classes
Storage Place
Default Value
Scope
Life-time
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.
#include <stdio.h>
void main(){
int a=10;
auto int b=10;//same like above
printf("%d %d",a,b);
}
Output:
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.
Note: We can't get the address of register variable.
register int counter=0;
3) static
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>
void func() {
static int i=0;//static variable
int j=0;//local variable
i++;
j++;
printf("i= %d and j= %d\n", i, j);
}
void main() {
func();
func();
func();
}
Output:
i= 1 and j= 1 i= 2 and j= 1 i= 3 and j= 1
4) extern
The extern keyword is used before a variable to inform the compiler that this variable is declared somewhere else. The extern declaration does not allocate storage for variables.
Problem when extern is not used
main() { a = 10; //Error:cannot find variable a printf("%d",a); }
Example Using extern in same file
main()
{
extern int x; //Tells compiler that it is defined somewhere else
x = 10;
printf("%d",x);
}
int x; //Global variable x
No comments:
Post a Comment
Please write your view and suggestion....