What are the scope rules to functions in C programming?

Scope rules in C programming define where variables and functions can be accessed within a program. These rules determine the visibility and lifetime of variables based on where they are declared.

Syntax

/* Global scope */
data_type variable_name;

function_name() {
    /* Local scope */
    data_type variable_name;
}

Local Scope

Local scope specifies that variables defined within a block are visible only in that block and invisible outside the block. These variables exist only during the function execution.

Global Scope

Global scope specifies that variables defined outside any function are visible throughout the program and can be accessed by any function.

Example 1: Basic Scope Demonstration

#include <stdio.h>

int r = 50; /* global variable */

void fun();

int main() {
    int p = 30; /* local variable */
    printf("p=%d, r=%d
", p, r); fun(); return 0; } void fun() { printf("r=%d
", r); /* can access global variable */ }
p=30, r=50
r=50

Scope Rules Related to Functions

  • Variables declared within a function body are called local variables
  • Local variables only exist inside the specific function that creates them
  • They are unknown to other functions and to the main function
  • Local variables are destroyed when the function completes execution
  • Global variables can be accessed by any function in the program

Example 2: Local Variables in Functions

This example demonstrates that local variables in one function cannot affect variables in another function −

#include <stdio.h>

void swap(int a, int b);

int main() {
    int a = 10, b = 20;
    printf("before swapping a=%d, b=%d
", a, b); swap(a, b); printf("after swapping a=%d, b=%d
", a, b); return 0; } void swap(int a, int b) { int c; c = a; a = b; b = c; printf("inside swap: a=%d, b=%d
", a, b); }
before swapping a=10, b=20
inside swap: a=20, b=10
after swapping a=10, b=20

Example 3: Global Variables in Functions

Variables declared outside function bodies are global and can be modified by any function −

#include <stdio.h>

int a = 10, b = 20; /* global variables */

void swap();

int main() {
    printf("before swapping a=%d, b=%d
", a, b); swap(); printf("after swapping a=%d, b=%d
", a, b); return 0; } void swap() { int c; c = a; a = b; b = c; }
before swapping a=10, b=20
after swapping a=20, b=10

Key Points

  • Local variables have function scope and automatic storage duration
  • Global variables have program scope and static storage duration
  • Local variables hide global variables with the same name within their scope
  • Global variables should be used sparingly to avoid naming conflicts

Conclusion

Understanding scope rules is crucial for proper variable management in C. Local variables provide encapsulation within functions, while global variables enable data sharing across the entire program.

Updated on: 2026-03-15T13:30:40+05:30

685 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements