Pages

STORAGE OF VARIABLES UNIT 11 PART 2


SCOPE OF VARIABLES
Introduction
In C you can define a variable in the block. The blocks are marked using { and } braces. The blocks can also be defined using the for statement. The scope of the variable is in the block in which it is declared, meaning that you can use that variable anywhere in the block. Even if some block is declared in that block, you can use that variable. When the variable is referred in the block and if it can be resolved using two definitions, then the nearest definition has more precedence. So the variable is interpreted according to the nearest definition. Even if the two definitions define two different data types for variables, they are accepted.
Program
#include <stdio.h>
main()
{      \\ Block 1
    int i = 10;      \\ A

    {         \\ Block 2
        int i = 0;             \\ B
        for( i=0;i<2;i++)   \\ C
        {
               printf("value of i is %d\n",i);
        }      \\ End of block 2
    }
    printf("the value of i is %d\n",i);   \\ D
}   \\ End of block 1
Explanation
  1. The statement block 1 defines the start of block 1.
  2. The statement ‘end of block 1’ defines the end of block 1.
  3. Statement A defines variable i which has the scope in the entire block 1.
  4. The statement block 2 defines the start of block 2.
  5. The statement ‘end of block 2’ defines the end of block 2.
  6. Statement B defines variable i which is entirely in block 2.
  7. The for loop refers i, which can be resolved using two definitions: statement A and statement B.
  8. Since the definition of statement B is nearest, the variable is referred using that definition, so the for loop modifies the value of i at statement B.
  9. Variable i at statement A and variable i at statement B are two independent variables even though they have the same name. Statement D is outside block 2, so it prints the value of variable i in block 1.
Points to Remember
  1. In C, you can define variables in the block, which is demarcated by using { and } braces. The variable has the scope inside the block in which it is declared.
  2. When the variable is resolved using two definitions, the nearest definition has more precedence.
FURTHER SCOPE OF VARIABLES
Introduction
In C, you can define the counter in the for loop itself; the counter has scope up to the end of the for loop.
Program
#include <stdio.h>
main()
{
    int k = 10;

    }
       for(int  i=0;i<2;i++)\\ A
       {      \\ B
              printf("value of i is %d\n",i);    \\ C
       }      \\ D
    {
    printf("the value of i is %d\n",i);     \\ E
}
Explanation
  1. The counter variable i is defined at statement A.
  2. The scope of the for loop is up to statement D, which is the end of the for loop for statement B.
  3. If you do not comment out statement E, you will get an error, because you cannot refer i in the outside block.
Point to Remember
You can define counter variable inside the for loop.