문제 5 · 정적 지역 변수와 전역 변수
문제 5 [2점]
아래 코드를 읽고, 출력을 예상하여 작성하세요.
cpp
#include <iostream>
using namespace std;
int y;
void func() {
static int z = 4;
z += 2;
cout << y + z << endl;
}
int main() {
func();
y = 4;
func();
}풀이 및 해설
두 가지 개념이 핵심입니다.
- 전역 변수global variable
int y;는 명시적 초기화가 없어0으로 초기화됩니다. - 정적 지역 변수static local variable
static int z = 4;는 최초 한 번만 초기화되고, 함수 호출이 끝나도 값이 유지됩니다.
첫 번째 func() 호출 (main에서 y는 아직 0)
z는4로 초기화된 뒤z += 2→z = 6y + z = 0 + 6 = 6출력
그 뒤 main에서 y = 4로 변경.
두 번째 func() 호출
z는 다시 초기화되지 않고 이전 값6을 유지 →z += 2→z = 8y + z = 4 + 8 = 12출력