0% found this document useful (0 votes)
42 views15 pages

Storage Classes

The document explains storage classes in C programming, detailing their role in determining memory storage, initial values, scope, and lifetime of variables. It outlines four types of storage classes: Automatic, Register, Static, and External, providing examples and differences between them. Additionally, it discusses the implications of using CPU registers versus memory for variable storage.

Uploaded by

palakmehra969
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
42 views15 pages

Storage Classes

The document explains storage classes in C programming, detailing their role in determining memory storage, initial values, scope, and lifetime of variables. It outlines four types of storage classes: Automatic, Register, Static, and External, providing examples and differences between them. Additionally, it discusses the implications of using CPU registers versus memory for variable storage.

Uploaded by

palakmehra969
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

NITESH KUMAR PANDEY

STORAGE CLASS

 The storage class determines the part of the memory


where the variable would be stored.
 The storage class also determines the initial value of
the variable.
 and it used to define the scope and lifetime of
variable.
 There are two storage location in computer :
CPU Registers and Memory
CPU REGISTER AND MEMORY

 A value stored in a CPU register can always be


accessed faster then the one that is stored in
memory.
TYPES OF STORAGE CLASSES

There are four types of storage classes in C:


i. Automatic storage class
ii. Register storage class
iii. Static storage class
iv. External storage class
Automatic Storage Class

 Keywords : auto.
 Storage : memory.
 Default initial value : garbage value.
 Scope : local to the block in
which the variable is
defined.
 Life : till the control remains
within the block in which
the variable is defined.
Example of Automatic Storage Class

#include<stdio.h>
#include<conio.h>
void main()
{
auto int i=1;
{
auto int i=2;
{
auto int i=3;
printf(“\n%d”,i);
}
printf(“%d”,i);
}
printf(“%d”,i);
getch();
}

Output:
3 2 1
Register Storage Class

 Keywords : register.
 Storage : CPU Register.
 Default initial value : garbage value.
 Scope : local to the block in
which the variable is
defined.
 Life : till the control remains
within the block in which
the variable is defined.
Example of Register Storage Class

#include<stdio.h>
#include<conio.h>
void main()
{
register int i;
for(i=1;i<=10;i++)
printf(“ %d",i);
getch();
}
Output:
1 2 3 4 5 6 7 8 9 10
Register Storage Class

 If the microprocessor has 16-bit registers then they


cannot hold a float value or a double value which
requires 4bytes(32-bit) and 8 bytes(64-bit)
 If you want to use the register storage class(16-bit
microprocessor) with float and double variable then
you won‟t get any error messages. Your compiler
would treat the variables as auto storage class.
Static Storage Class

 Keywords : static.
 Storage : memory.
 Default initial value : zero.
 Scope : local to the block in
which the variable is
defined.
 Life : value of the variable
persists between different
function calls.
Dif. b/w auto and static storage class

Automatic Static

#include<stdio.h> #include<stdio.h>
#include<conio.h> #include<conio.h>
increment(); increment();
void main() void main()
{ {
increment(); increment();
increment(); increment();
increment(); increment();
} }
increment() increment()
{ {
auto int i=1; static int i=1;
printf("%d\t",i); printf("%d\t",i);
i++; i++;
getch(); getch();
} }
Output: Output:
1 1 1 1 2 3
External Storage Class

 Keywords : extern.
 Storage : memory.
 Default initial value : zero.
 Scope : global.
 Life : as long as the program‟s
execution doesn‟t come
to an end.
• The different b/w two programs 1st auto and 2nd
static storage class for variable „i‟ the scope of
auto and static both use local to the block in witch
the variable is declared.
• Those program consists two functions main() and
increment().
• The increment() function called from main()
function for three times.
• Each time increment the value of „i‟ and print.
• when variable „i‟ is auto each time increment and
re-initialized to 1.
Example of External Storage Class
#include<stdio.h>
#include<conio.h>
int i =1;
increment();
void main()
{
printf("%d\t",i);
increment();
increment();
getch();
}
increment()
{
i++;
printf("%d\t",i);
}
Output:
1 2 3

You might also like