- The scope of a external variables remains from the point of the definition through the remainder of the program.
- External variables are recognized globally, that can be accessed from any function
- Using external variables we can transfer information in to a function without using arguments.
- The key word for external variable is extern.
- External variable definition is written in the same manner as an ordinary variable declaration.
- It must appear outside of ,and usually before the functions that access the external variables
- Example:
int x; //External variable definitions
fun1(){}
fun2(){} - An external variable definition will automatically allocate the required storage space for the external variables with in the computer memory.
- The assignment of initial values can be included.
Example:int x=10; //initializing external variable in definition
fun1(){}
fun2(){} - The keyword extern is not required in external variable definition.
- If a function requires an external variable, that has been defined earlier in the program, then the function may access the external variable freely.
Example:#include<stdio.h>
int x=10;
fun1
{
}
fun2
{
int a,b=10;
a=b+x; //no need to declare x here
}
- If the program is a multi file program then the external variable must be declared where ever its needed.
- An external variable declaration begins with the keyword extern.
- The name and the datatype of the external variable must agree with the corresponding external variable definition that appear outside of the function.
- Example:
file1 #include<stdio.h>
int x=10; //external var defined here
fun1()
{
}
fun2()
{
}
In file 2,x should be of type integer because in file 1, x is defined as integer.file2 #include<stdio.h>
fun3()
{
extern int x; //declaration
} - The storage space for external variables will not be allocated because the value is already defined.
- External variable declaration cannot include the assignment of initial value.
Initialization of External variable:
- External variables can be assigned initial value during variable definition.
- The initial values will be assigned only once, at the beginning of the program.
- The initial values must be expressed as constants not expressions or statements
Example:#include<stdio.h>
#define z 10
/*definition of external variable x and Y
int x=z;
int y=z+x; //error
fun1()
{
}
fun2()
{
int a,b=10;
a=b+x;
printf("x=%d y=%d\n",x,y);
}
int main()
{
fun1();
fun2();
return;
}
- The external variables will then retain these values, unless they are altered during the execution of the program.
- If the value of the external variable is changed with in a function, then the changed value will be carried over in to other parts of the program.
Example#include<stdio.h>
#define z 10
int x=z;
fun1()
{
x=30;
printf("In fun1, x=%d \n",x);
}
fun2()
{
x=20;
printf("In fun2, x=%d \n",x);
}
int main()
{
printf("In main, x=%d \n",x);
fun1();
fun2();
return;
}
In main, x=10
In fun1, x=30
In fun2, x=20 - If the initial value is not assigned , the variable will automatically be assigned a value of zero.
Example#include<stdio.h>
int x; //Not initialized
fun1()
{
x=30;
printf("In fun1, x=%d \n",x);
}
fun2()
{
x=20;
printf("In fun2, x=%d \n",x);
}
int main()
{
printf("In main, x=%d \n",x);
fun1();
fun2();
return;
}
The output of the above program is
In main, x=0
In fun1, x=30
In fun2, x=20
thanks for sharing sunitha
ReplyDelete