문제 13 · 실습 — 지역·정적 지역·전역 변수
같은 함수를 세 번 호출하며 세 종류 변수의 값이 어떻게 달라지는지 확인합니다.
cpp
#include <iostream>
using namespace std;
int g = 100; // 전역 변수: 프로그램 전체에서 접근
void counter() {
int local = 0; // 지역: 호출마다 새로 생성·초기화
static int staticLocal = 0; // 정적 지역: 최초 1회 초기화, 값 유지
local++;
staticLocal++;
cout << "local=" << local
<< ", staticLocal=" << staticLocal
<< ", global=" << g << endl;
}
int main() {
counter();
counter();
counter();
return 0;
}출력은 다음과 같습니다. local은 매번 1로 되돌아가지만, staticLocal은 1 → 2 → 3으로 누적되고 global은 계속 100입니다.
local=1, staticLocal=1, global=100
local=1, staticLocal=2, global=100
local=1, staticLocal=3, global=100