The static variable may be internal or external depending on the place of declaration. Both kinds of static variables are stored in initialized data segments.
Internal Static Variables
Internal Static variables are defined as those having static variables which are declared inside a function and extend up to the end of the particular function.
Syntax:
main( )
{
static datatype variable;
// other statements
}
Example:
C
#include <stdio.h>
int value();
int main()
{
printf ("%d", value());
return 0;
}
int value()
{
static int a = 5;
return a;
}
|
External Static Variables
External Static variables are those which are declared outside a function and set globally for the entire file/program.
Syntax:
static datatype variable;
main()
{
statements
}
function1()
{
statements
}
Example:
C
#include <stdio.h>
int add( int , int );
static int a = 5;
int main()
{
int c;
printf ("%d", add(a, c));
}
int add( int c, int b)
{
b = 5;
c = a + b;
return c;
}
|
Difference between Internal Static Variables and External Static Variables
Following are some major differences between internal static and external static variables:
Parameter | Internal Static Variables | External Static Variables |
---|
Keyword | ”static” | ”static” |
---|
Linkage | Internal static variable has internal linkage. | External static variables has internal linkage. |
---|
Declaration | Internal static variables are declared within a function. | External static variables are declared outside any function. |
---|
Comparison | Internal static variables are local variables. | External static variables are similar to global variables. |
---|
Visibility | Internal static variables are accessible only in their particular function. | External Static variables are accessible only from within the file of their declaration. |
---|
Lifetime | The storage duration of Internal static variables is throughout the whole program. | The storage duration of external static variables is throughout the whole program. |
---|
Scope | Function of the variable’s declaration. | File of the variable’s declaration. |
---|