Local Scope in C

The local scope refers to the region inside a block or a function. It is the space enclosed between the { } braces.

  • The variables declared within the local scope are called local variables.
  • Local variables are visible in the block they are declared in and other blocks nested inside that block.
  • Local scope is also called Block scope.
  • Local variables have internal linkage.

Example

C




// C program to illustrate the local scope
#include <stdio.h>
 
// Driver Code
int main()
{
    {
        int x = 10, y = 20;
        {
            // The outer block contains
            // declaration of x and
            // y, so following statement
            // is valid and prints
            // 10 and 20
            printf("x = %d, y = %d\n", x, y);
            {
                // y is declared again,
                // so outer block y is
                // not accessible in this block
                int y = 40;
 
                // Changes the outer block
                // variable x to 11
                x++;
 
                // Changes this block's
                // variable y to 41
                y++;
 
                printf("x = %d, y = %d\n", x, y);
            }
 
            // This statement accesses
            // only outer block's
            // variables
            printf("x = %d, y = %d\n", x, y);
        }
    }
    return 0;
}


Output

x = 10, y = 20
x = 11, y = 41
x = 11, y = 20

Scope rules in C

The scope of a variable in C is the block or the region in the program where a variable is declared, defined, and used. Outside this region, we cannot access the variable and it is treated as an undeclared identifier.

  • The scope is the area under which a variable is visible.
  • The scope of an identifier is the part of the program where the identifier may directly be accessible.
  • We can only refer to a variable in its scope.
  • In C, all identifiers are lexically(or statically) scoped.

Example

C




// C program to illustrate the scope of a variable
#include <stdio.h>
 
int main()
{
    // Scope of this variable is within main() function
    // only.
    int var = 34;
 
    printf("%d", var);
    return 0;
}
 
// function where we try to access the var defined in main()
void func() { printf("%d", var); }


Output

solution.c: In function 'func':
solution.c:15:28: error: 'var' undeclared (first use in this function)
 void func() { printf("%d", var); }

Here, we tried to access variable names var As we can see that if we try to refer to the variable outside its scope, we get the above error.

Similar Reads

Types of Scope Rules in C

...

1. Global Scope in C

C scope rules can be covered under the following two categories:...

2. Local Scope in C

The global scope refers to the region outside any block or function....

FAQs on Scope Rules in C

...