c++

ranga1512Mobile - Wireless

Sep 2, 2012 (5 years and 2 months ago)

809 views

8/11/12
C++ Storage Classes
1/5
www.exforsys.com/tutorials/c-plus-plus/storage-classes-in-c.html
Login
 
  
|
   
Signup
  
 
Search
Home
 
 
Technical Training
 
 
C++ Tutorials
C++ Storage Classes
Author: 
Sripriya R
     Published on: 10th Sep 2007    |   Last Updated on: 25th Jul 2011
In this C++ tutorial, you will learn about storage 
classes
, types of storage class variables ­ Automatic, External and Static
explained with examples.
Storage classes:
In the context of scope of variables in functions exists the important concept of storage class.
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
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:
Sample Code
1

void
 exforsys
(
 
)
2

{
 
3

auto
 
int
 x;
4

auto
 
float
 y;
Home
Technical Training
Career Training
Book Reviews
Skill Test
Forums
Privacy and Legal
 | 
Contact Us
 | 
DMCA
 | 
Sitemap
8/11/12
C++ Storage Classes
2/5
www.exforsys.com/tutorials/c-plus-plus/storage-classes-in-c.html
5

...
6

...
7

}
Copyright exforsys.com
is the same as
Sample Code
1

void
 exforsys
(
 
)
2

{
 
3

int
 x;
4

float
 y;              
//Automatic Variables
5

...
6

...
7

}
Copyright exforsys.com
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 variables x and y are 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:
Sample Code
1

#include <iostream>
2

using namespace std;
3

int
 exforsys
(
int
)
;
4

int
 exforsys2
(
int
)
;
5

void
 main
(
 
)
6

{
7

        
int
 in;
8

        
int
 out;
9

        
while
(
1
)
 
10

        
{
11

                
cout
 << 
"nEnter input value:"
;
12

                cin>>in;
13

                
if
 
(
in 
==
 
0
)
 
14

                        
break
;
8/11/12
C++ Storage Classes
3/5
www.exforsys.com/tutorials/c-plus-plus/storage-classes-in-c.html
Read Next:
 
C++ Function Passing Types
15

                
16

                out
=
exforsys
(
in
)
;
17

                
cout
 << 
"nResult : "
 << out;
18

 
19

                out
=
exforsys2
(
in
)
;
20

                
cout
 << 
"nResult2: "
 << out;
21

        
}
 
22

        
cout
 << 
"n End of Program "
 ;
23

}
24

 
25

int
 exforsys
(
int
 x
)
26

{
27

        
static
 
int
 a
=
0
;
28

        a
++
;
29

        
return
(
a
)
;
30

}
 
31

int
 exforsys2
(
int
 x
)
32

{
33

        
int
 b
=
0
;
34

        b
++
;
35

        
return
(
b
)
;
36

}
Copyright exforsys.com
In the above program, the static variables a is initialized only once in the beginning of the program. Then the value of the
variable is maintained between function calls.
When the program begins, the value of static variable a is initialized to zero. The value of the input in is 3 (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, thus, the return
of value from function exforsys( ) for the first time is 1, which is printed in the called function.
It is the same case for the second function, exforsys2(), the variable b which is not declared static, is incremented thus making it
equal to 1, and the return value for the first time is 1.
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, so the
return value is now 2.
Now, for the second function, the variable b which was not declared static, starts from 0 again, making it equal to 1 after
incrementing it. Being not declared static, it will always start from 0.
Thus the output of the above program is:
8/11/12
C++ Storage Classes
4/5
www.exforsys.com/tutorials/c-plus-plus/storage-classes-in-c.html
 
 
Comments
0 comments
Leave a message...
Discussion
Discussion
Community
Community
No one has commented yet.
0
0
 Stars
 Stars
 
Go Top
 
 
 
 
Exforsys Inc 
on
 
+410
Follow
Connect
Ads
Related Articles
1

JMeter ­ Adding User Defined
Variables
2

VB Script ­ Working with
Variables
3

C++ Variables and Data types
4

PHP Tutorials ­ Variables
Copyright © 2000 ­ 2012 exforsys.com. All Rights Reserved
8/11/12
C++ Storage Classes
5/5
www.exforsys.com/tutorials/c-plus-plus/storage-classes-in-c.html
5

C++ Variables Scope in Functions
6

JavaScript Variables
7

WebSphere V5.0 : Debugging ­
View variables
8

Virtual Team Performance
Variables
9

Project Management Structure and
Variables
10

ODP.NET ­ Working with Bind
Variables together with
OracleParameter
Exforsys e­Newsletter
Enhance Technical and Soft Skills every week,
get our Job Interview Questions and Answers
eBook free when you subscribe.
Subscribe and Get Free Bonus PDF Book
Ads