Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어의 범위(Scope) 규칙 총정리 – 전역 변수와 지역 변수의 차이

C 언어에서 범위(scope)란 프로그램 내에서 특정 식별자나 변수에 직접 접근할 수 있는 영역을 의미합니다. 즉, 변수를 어디에 선언했느냐에 따라 해당 변수를 참조할 수 있는 위치와 유효 기간이 결정됩니다.

C 언어의 범위 규칙은 크게 두 가지로 분류할 수 있습니다.

  • 전역 변수(Global Variable)
  • 지역 변수(Local Variable)

전역 변수(Global Variables)

전역 변수는 프로그램 내 어떤 함수에도 속하지 않는 외부 영역에서 선언·정의되는 변수입니다. 전역 변수는 프로그램이 시작될 때 생성되어 종료될 때까지 값을 유지하며, 프로그램이 실행되는 동안 어느 위치에서든 자유롭게 접근할 수 있습니다.

다음은 C 언어에서 전역 변수를 사용한 예제입니다.

예제

#include <stdio.h>
int s;
int main () {
    int a = 15;
    int b = 20;
    s = a+b;
    printf ("a = %d\n b = %d\n s = %d\n", a, b, s);
    return 0;
}

실행 결과

a = 15
b = 20
s = 35

위 예제에서 변수 s는 함수 밖에서 선언된 전역 변수입니다. 따라서 main() 함수 안에서도 별도의 제한 없이 접근하여 a + b의 연산 결과를 저장할 수 있습니다.

지역 변수(Local Variables)

지역 변수는 블록({ }) 또는 함수 내부에서 선언·정의되는 변수입니다. 지역 변수는 해당 블록이나 함수 내부에서만 사용할 수 있으며, 블록이나 함수의 실행이 끝나면 메모리에서 사라집니다.

다음은 C 언어에서 지역 변수를 사용한 예제입니다.

예제

#include <stdio.h>
int main () {
    int a = 15;
    int b = 20;
    a = a+b;
    printf ("a = %d\n b = %d\n", a, b);
    return 0;
}

실행 결과

a = 35
b = 20

위 예제의 ab는 모두 main() 함수 내부에서 선언된 지역 변수입니다. 따라서 main() 함수 안에서만 접근할 수 있으며, 다른 함수에서는 사용할 수 없습니다.

전역 변수 vs 지역 변수 비교 정리

두 변수의 차이를 한눈에 파악할 수 있도록 표로 정리하면 다음과 같습니다.

구분전역 변수지역 변수
선언 위치모든 함수의 외부블록 또는 함수 내부
접근 가능 범위프로그램 전체선언된 블록·함수 내부
생존 기간프로그램 종료 시까지 유지블록·함수 종료 시 소멸
초기화하지 않았을 때0으로 자동 초기화쓰레기 값(garbage value) 저장

이처럼 C 언어에서는 변수의 선언 위치가 곧 그 변수의 유효 범위와 생존 기간을 결정합니다. 전역 변수는 편리하지만 프로그램 어디서든 값이 변경될 수 있어 의도치 않은 오류를 유발할 수 있으므로, 가능하면 지역 변수를 활용하고 꼭 필요한 경우에만 전역 변수를 사용하는 것이 좋은 코딩 습관입니다.