C - Scope Rules: Local Variables
C - Scope Rules: Local Variables
A scope in any prog ramming is a reg ion of the prog ram where a defined variable can have its existence and
beyond that variable can not be accessed. T here are three places where variables can be declared in C
prog ramming lang uag e:
1. Inside a function or a block which is called loc al variables,
2. Outside of all functions which is called g lobal variables.
3. In the definition of function parameters which is called formal parameters.
Let us explain what are loc al and g lobal variables and formal parameters.
Local Variables
Variables that are declared inside a function or block are called local variables. T hey can be used only by
statements that are inside that function or block of code. Local variables are not known to functions outside their
own. Following is the example using local variables. Here all the variables a, b and c are local to main() function.
#include <stdio.h>
int main ()
{
/* local variable declaration */
int a, b;
int c;
/* actual initialization */
a = 10;
b = 20;
c = a + b;
printf ("value of a = %d, b = %d and c = %d\n", a, b, c);
return 0;
}
Global Variables
Global variables are defined outside of a function, usually on top of the prog ram. T he g lobal variables will hold
their value throug hout the lifetime of your prog ram and they can be accessed inside any of the functions defined
for the prog ram.
A g lobal variable can be accessed by any function. T hat is, a g lobal variable is available for use throug hout your
entire prog ram after its declaration. Following is the example using g lobal and local variables:
#include <stdio.h>
/* global variable declaration */
int g;
int main ()
{
/* local variable declaration */
int a, b;
/* actual initialization */
a = 10;
b = 20;
g = a + b;
printf ("value of a = %d, b = %d and g = %d\n", a, b, g);
return 0;
return 0;
}
A prog ram can have same name for local and g lobal variables but value of local variable inside a function will take
preference. Following is an example:
#include <stdio.h>
/* global variable declaration */
int g = 20;
int main ()
{
/* local variable declaration */
int g = 10;
printf ("value of g = %d\n",
g);
return 0;
}
When the above code is compiled and executed, it produces the following result:
value of g = 10
Formal Parameters
Function parameters, formal parameters, are treated as local variables with-in that function and they will take
preference over the g lobal variables. Following is an example:
#include <stdio.h>
/* global variable declaration */
int a = 20;
int main ()
{
/* local variable declaration in main function */
int a = 10;
int b = 20;
int c = 0;
printf ("value of a in main() = %d\n",
c = sum( a, b);
printf ("value of c in main() = %d\n",
a);
c);
return 0;
}
/* function to add
int sum(int a, int
{
printf ("value
printf ("value
two integers */
b)
of a in sum() = %d\n",
of b in sum() = %d\n",
a);
b);
return a + b;
}
When the above code is compiled and executed, it produces the following result:
value
value
value
value
of
of
of
of
a
a
b
c
in
in
in
in
main() = 10
sum() = 10
sum() = 20
main() = 30
are initialized automatically by the system when you define them as follows:
Data T ype
int
char
'\0'
float
double
pointer
NULL
It is a g ood prog ramming practice to initialize variables properly otherwise, your prog ram may produce
unexpected results because uninitialized variables will take some g arbag e value already available at its memory
location.