Skip to content

문제 13 · 지역·정적 지역·전역 변수

문제 13 [4점]

아래 문제를 읽고, 각 문제의 제시어에 대한 설명을 예시와 함께 서술하시오.

지역local, 정적 지역static local, 전역global 변수에 대해 예시와 함께 서술하시오.

풀이 및 해설

세 변수는 유효 범위(scope)수명(lifetime) 에서 차이가 있습니다.

구분선언 위치수명초기값
지역함수(블록) 내부블록을 벗어나면 소멸초기화 안 하면 쓰레기 값
정적 지역함수 내부 + static프로그램 종료까지 유지0 (한 번만 초기화)
전역함수 밖프로그램 종료까지 유지0
  • 지역 변수: 함수가 호출될 때 생성되고 끝나면 사라집니다. 매 호출마다 새로 만들어집니다.
  • 정적 지역 변수: 함수 안에 있어 이름은 그 함수에서만 보이지만, 값은 호출이 끝나도 유지되어 다음 호출에 이어집니다. 최초 1회만 초기화됩니다.
  • 전역 변수: 함수 밖에 선언되어 프로그램 어디서나 접근할 수 있고, 프로그램 내내 살아 있습니다.

예시

cpp
int g = 100;   // 전역

void counter() {
    int local = 0;               // 지역: 호출마다 0으로 재생성
    static int staticLocal = 0;  // 정적 지역: 값 유지
    local++;
    staticLocal++;
    cout << local << " " << staticLocal << " " << g << endl;
}

counter()를 세 번 호출하면 local은 늘 1이지만, staticLocal1, 2, 3으로 누적되고 g는 계속 100입니다.

👉 실습(C++)에서 확인하기

PDF