SlideShare a Scribd company logo
What is Storage Class?
Storage class defined for a variable determines the accessibility and longevity of the
variable. The accessibility of the variable relates to the portion of the program that
has access to the variable. The longevity of the variable refers to the length of time
the variable exists within the program.

Types of Storage Class Variables in C++:
•
Automatic
•
External
•
Static
•
Register
Automatic:
Variables defined within the function body are called automatic variables. Auto is the
keyword used to declare automatic variables. By default and without the use of a
keyword, the variables defined inside a function are automatic variables.
For instance:

void exforsys( )
{
auto int x;
auto float y;
………
…………
}

is same as

void exforsys( )
{
int x;
float y;
………
…………
}

//Automatic Variables

In the above function, the variable x and y are created only when the function
exforsys( ) is called. An automatic variable is created only when the function is
called. When the function exforsys( ) is called, the variable x and y is allocated
memory automatically. When the function exforsys( ) is finished and exits the control
transfers to the calling program, the memory allocated for x and y is automatically
destroyed. The term automatic variable is used to define the process of memory
being allocated and automatically destroyed when a function is called and returned.
The scope of the automatic variables is only within the function block within which it
is defined. Automatic variable are also called local variables.

External:
External variables are also called global variables. External variables are defined
outside any function, memory is set aside once it has been declared and remains
until the end of the program. These variables are accessible by any function. This is
mainly utilized when a programmer wants to make use of a variable and access the
variable among different function calls.
Static:
The static automatic variables, as with local variables, are accessible only within the
function in which it is defined. Static automatic variables exist until the program ends
in the same manner as external variables. In order to maintain value between
function calls, the static variable takes its presence.
For example:

#include <iostream.h>
int exforsys(int);
void main( )
{
int in,out;
while(in!=0)
{
cout<<”Enter input value:”;
cin>>in;
out=exforsys(in);
cout<”nResult:”<<out;
}
cout<”n End of Program”<<out;
}
int exforsys(int x)
{
static int a=0;
static int b=0;
a++;
b=b+x;
return(b/a);
}
In the above program, the static variables a and b are initialized only once in the
beginning of the program. Then the value of the variables is maintained between
function calls.

When the program begins, the value of static variable a and b is initialized to zero.
The value of the input in is 5 (which is not equal to zero) and is then passed to the
function in variable x. The variable a is incremented thus making a as equal to 1.
Variable b becomes equal to 5 and thus, the return of value from function exforsys( )
for the first time is 5, which is printed in the called function.

The second time the value of the input in is 7 (which is not equal to zero) and is
passed to the function in variable x. The variable a (which is declared as static) has
the previous value of 1. This is incremented and the value of a is equal to 2. The
value of b is maintained from the previous statement as 5 and new value of b now is
b=5+7 = 12 and thus, the return value from the function is 12/2=6 which is printed
in the called function.

Storage Classes.
C has a concept of 'Storage classes' which are used to define the scope (visibility) and life
time of variables and/or functions.
So what Storage Classes are available?
auto register static extern typedef

Auto - storage class
Auto is the default storage class for local variables.
{
int Count;
auto int Month;
}
The example above defines two variables with the same storage class. auto can only be
used within functions, i.e. local variables.
Register - Storage Class
Register is used to define local variables that should be stored in a register instead of
RAM. This means that the variable has a maximum size equal to the register size (usually
one word) and cant have the unary '&' operator applied to it (as it does not have a
memory location).
{
register int Miles;
}
Register should only be used for variables that require quick access - such as counters. It
should also be noted that defining 'register' goes not mean that the variable will be stored
in a register. It means that it MIGHT be stored in a register - depending on hardware and
implementation restrictions.
Static - Storage Class
Static is the default storage class for global variables. The two variables below (count and
road) both have a static storage class.
static int Count;
int Road;
main()
{
printf("%dn", Count);
printf("%dn", Road);
}
'Static' can also be defined within a function. If this is done, the variable is initialized at
compilation time and retains its value between calls. Because it is initialsed at
compilation time, the initialization value must be a constant. This is serious stuff - tread
with care.
void Func(void)
{
static Count=1;
}
Here is an example
There is one very important use for 'static'. Consider this bit of code.
char *Func(void);
main()
{
char *Text1;
Text1 = Func();
}
char *Func(void)
{
char Text2[10]="martin";
return(Text2);
}
'Func' returns a pointer to the memory location where 'Text2' starts BUT Text2 has a
storage class of auto and will disappear when we exit the function and could be
overwritten by something else. The answer is to specify:
static char Text[10]="martin";
The storage assigned to 'Text2' will remain reserved for the duration if the program.

Extern - storage Class
extern defines a global variable that is visable to ALL object modules. When you use
'extern' the variable cannot be initalized as all it does is point the variable name at a
storage location that has been previously defined.
Source 1
-------extern int count;
write()
{
printf("count is %dn", count);
}

Source 2
-------int count=5;
main()
{
write();
}

Count in 'source 1' will have a value of 5. If source 1 changes the value of count - source
2 will see the new value.
'Func' returns a pointer to the memory location where 'Text2' starts BUT Text2 has a
storage class of auto and will disappear when we exit the function and could be
overwritten by something else. The answer is to specify:
static char Text[10]="martin";
The storage assigned to 'Text2' will remain reserved for the duration if the program.

Extern - storage Class
extern defines a global variable that is visable to ALL object modules. When you use
'extern' the variable cannot be initalized as all it does is point the variable name at a
storage location that has been previously defined.
Source 1
-------extern int count;
write()
{
printf("count is %dn", count);
}

Source 2
-------int count=5;
main()
{
write();
}

Count in 'source 1' will have a value of 5. If source 1 changes the value of count - source
2 will see the new value.

More Related Content

PPTX
Storage Class Specifiers in C++
PPTX
Storage Classes and Functions
PPTX
Storage classes in C
PPTX
Storage classes in C
PPT
STORAGE CLASSES
PPTX
Storage class
PPTX
11 lec 11 storage class
PPTX
Storage Class in C Progrmming
Storage Class Specifiers in C++
Storage Classes and Functions
Storage classes in C
Storage classes in C
STORAGE CLASSES
Storage class
11 lec 11 storage class
Storage Class in C Progrmming

What's hot (20)

PPTX
Storage class in c
PPTX
Storage class in C Language
PPT
Storage classes
PPT
Functions in c
PPT
storage class
PPTX
Storage classes in c++
DOCX
Storage class
PPT
Storage classes
PDF
Function in C++
PPTX
Storage classes in c language
PPTX
Storage classes
DOC
Storage classess of C progamming
PDF
Linq & lambda overview C#.net
PDF
Chapter 11 Function
PPT
Storage classes
PDF
Data structure scope of variables
DOCX
Types of storage class specifiers in c programming
PPT
85ec7 session2 c++
PPTX
Storage classes
PDF
Algorithm and Programming (Looping Structure)
Storage class in c
Storage class in C Language
Storage classes
Functions in c
storage class
Storage classes in c++
Storage class
Storage classes
Function in C++
Storage classes in c language
Storage classes
Storage classess of C progamming
Linq & lambda overview C#.net
Chapter 11 Function
Storage classes
Data structure scope of variables
Types of storage class specifiers in c programming
85ec7 session2 c++
Storage classes
Algorithm and Programming (Looping Structure)
Ad

Viewers also liked (9)

DOC
Data type
DOC
Loop and storage class
PPT
DOC
Control structures
PDF
Cursors
PDF
Constructors and destructors
PDF
Constructors and Destructors
PDF
SEO: Getting Personal
PDF
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
Data type
Loop and storage class
Control structures
Cursors
Constructors and destructors
Constructors and Destructors
SEO: Getting Personal
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
Ad

Similar to What is storage class (20)

PDF
Storage classes arrays & functions in C Language
DOC
5.program structure
PDF
Unit iii
PPT
Lecture 13 - Storage Classes
PDF
Latest C Interview Questions and Answers
PPTX
C concepts and programming examples for beginners
PPTX
C language presentation
PPTX
Operator Overloading and Scope of Variable
PDF
Static Keyword Static is a keyword in C++ used to give special chara.pdf
PPTX
CH.4FUNCTIONS IN C_FYBSC(CS).pptx
PPTX
Function C++
PDF
Advanced C Programming Notes
PDF
FUNCTION IN C PROGRAMMING UNIT -6 (BCA I SEM)
PDF
C interview questions
DOC
C notes diploma-ee-3rd-sem
DOC
Functions struct&union
PPTX
Presentation on function
PPT
Functions
PPTX
11_Functions_Introduction.pptx javascript notes
Storage classes arrays & functions in C Language
5.program structure
Unit iii
Lecture 13 - Storage Classes
Latest C Interview Questions and Answers
C concepts and programming examples for beginners
C language presentation
Operator Overloading and Scope of Variable
Static Keyword Static is a keyword in C++ used to give special chara.pdf
CH.4FUNCTIONS IN C_FYBSC(CS).pptx
Function C++
Advanced C Programming Notes
FUNCTION IN C PROGRAMMING UNIT -6 (BCA I SEM)
C interview questions
C notes diploma-ee-3rd-sem
Functions struct&union
Presentation on function
Functions
11_Functions_Introduction.pptx javascript notes

Recently uploaded (20)

PPTX
TLE Review Electricity (Electricity).pptx
PDF
Enhancing emotion recognition model for a student engagement use case through...
PPTX
SOPHOS-XG Firewall Administrator PPT.pptx
PPTX
1. Introduction to Computer Programming.pptx
PDF
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
PDF
Web App vs Mobile App What Should You Build First.pdf
PDF
Hybrid model detection and classification of lung cancer
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PPTX
Tartificialntelligence_presentation.pptx
PDF
A novel scalable deep ensemble learning framework for big data classification...
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
August Patch Tuesday
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PPTX
Chapter 5: Probability Theory and Statistics
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Zenith AI: Advanced Artificial Intelligence
TLE Review Electricity (Electricity).pptx
Enhancing emotion recognition model for a student engagement use case through...
SOPHOS-XG Firewall Administrator PPT.pptx
1. Introduction to Computer Programming.pptx
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
Web App vs Mobile App What Should You Build First.pdf
Hybrid model detection and classification of lung cancer
Unlocking AI with Model Context Protocol (MCP)
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
Tartificialntelligence_presentation.pptx
A novel scalable deep ensemble learning framework for big data classification...
Group 1 Presentation -Planning and Decision Making .pptx
Building Integrated photovoltaic BIPV_UPV.pdf
Digital-Transformation-Roadmap-for-Companies.pptx
August Patch Tuesday
Assigned Numbers - 2025 - Bluetooth® Document
Chapter 5: Probability Theory and Statistics
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Zenith AI: Advanced Artificial Intelligence

What is storage class

  • 1. What is Storage Class? Storage class defined for a variable determines the accessibility and longevity of the variable. The accessibility of the variable relates to the portion of the program that has access to the variable. The longevity of the variable refers to the length of time the variable exists within the program. Types of Storage Class Variables in C++: • Automatic • External • Static • Register Automatic: Variables defined within the function body are called automatic variables. Auto is the keyword used to declare automatic variables. By default and without the use of a keyword, the variables defined inside a function are automatic variables. For instance: void exforsys( ) { auto int x; auto float y; ……… ………… } is same as void exforsys( ) { int x; float y; ……… ………… } //Automatic Variables In the above function, the variable x and y are created only when the function exforsys( ) is called. An automatic variable is created only when the function is called. When the function exforsys( ) is called, the variable x and y is allocated memory automatically. When the function exforsys( ) is finished and exits the control transfers to the calling program, the memory allocated for x and y is automatically
  • 2. destroyed. The term automatic variable is used to define the process of memory being allocated and automatically destroyed when a function is called and returned. The scope of the automatic variables is only within the function block within which it is defined. Automatic variable are also called local variables. External: External variables are also called global variables. External variables are defined outside any function, memory is set aside once it has been declared and remains until the end of the program. These variables are accessible by any function. This is mainly utilized when a programmer wants to make use of a variable and access the variable among different function calls. Static: The static automatic variables, as with local variables, are accessible only within the function in which it is defined. Static automatic variables exist until the program ends in the same manner as external variables. In order to maintain value between function calls, the static variable takes its presence. For example: #include <iostream.h> int exforsys(int); void main( ) { int in,out; while(in!=0) { cout<<”Enter input value:”; cin>>in; out=exforsys(in); cout<”nResult:”<<out; } cout<”n End of Program”<<out; } int exforsys(int x) { static int a=0; static int b=0; a++; b=b+x; return(b/a); }
  • 3. In the above program, the static variables a and b are initialized only once in the beginning of the program. Then the value of the variables is maintained between function calls. When the program begins, the value of static variable a and b is initialized to zero. The value of the input in is 5 (which is not equal to zero) and is then passed to the function in variable x. The variable a is incremented thus making a as equal to 1. Variable b becomes equal to 5 and thus, the return of value from function exforsys( ) for the first time is 5, which is printed in the called function. The second time the value of the input in is 7 (which is not equal to zero) and is passed to the function in variable x. The variable a (which is declared as static) has the previous value of 1. This is incremented and the value of a is equal to 2. The value of b is maintained from the previous statement as 5 and new value of b now is b=5+7 = 12 and thus, the return value from the function is 12/2=6 which is printed in the called function. Storage Classes. C has a concept of 'Storage classes' which are used to define the scope (visibility) and life time of variables and/or functions. So what Storage Classes are available? auto register static extern typedef Auto - storage class Auto is the default storage class for local variables. { int Count; auto int Month; } The example above defines two variables with the same storage class. auto can only be used within functions, i.e. local variables. Register - Storage Class Register is used to define local variables that should be stored in a register instead of RAM. This means that the variable has a maximum size equal to the register size (usually one word) and cant have the unary '&' operator applied to it (as it does not have a memory location). { register int Miles; }
  • 4. Register should only be used for variables that require quick access - such as counters. It should also be noted that defining 'register' goes not mean that the variable will be stored in a register. It means that it MIGHT be stored in a register - depending on hardware and implementation restrictions. Static - Storage Class Static is the default storage class for global variables. The two variables below (count and road) both have a static storage class. static int Count; int Road; main() { printf("%dn", Count); printf("%dn", Road); } 'Static' can also be defined within a function. If this is done, the variable is initialized at compilation time and retains its value between calls. Because it is initialsed at compilation time, the initialization value must be a constant. This is serious stuff - tread with care. void Func(void) { static Count=1; } Here is an example There is one very important use for 'static'. Consider this bit of code. char *Func(void); main() { char *Text1; Text1 = Func(); } char *Func(void) { char Text2[10]="martin"; return(Text2); }
  • 5. 'Func' returns a pointer to the memory location where 'Text2' starts BUT Text2 has a storage class of auto and will disappear when we exit the function and could be overwritten by something else. The answer is to specify: static char Text[10]="martin"; The storage assigned to 'Text2' will remain reserved for the duration if the program. Extern - storage Class extern defines a global variable that is visable to ALL object modules. When you use 'extern' the variable cannot be initalized as all it does is point the variable name at a storage location that has been previously defined. Source 1 -------extern int count; write() { printf("count is %dn", count); } Source 2 -------int count=5; main() { write(); } Count in 'source 1' will have a value of 5. If source 1 changes the value of count - source 2 will see the new value.
  • 6. 'Func' returns a pointer to the memory location where 'Text2' starts BUT Text2 has a storage class of auto and will disappear when we exit the function and could be overwritten by something else. The answer is to specify: static char Text[10]="martin"; The storage assigned to 'Text2' will remain reserved for the duration if the program. Extern - storage Class extern defines a global variable that is visable to ALL object modules. When you use 'extern' the variable cannot be initalized as all it does is point the variable name at a storage location that has been previously defined. Source 1 -------extern int count; write() { printf("count is %dn", count); } Source 2 -------int count=5; main() { write(); } Count in 'source 1' will have a value of 5. If source 1 changes the value of count - source 2 will see the new value.