#include <stdio.h>
int func(){
static int x =0;
x+=2;
return x;
}
int main(){
int x = 1;
int sum=0;
for(int i=0;i<4;i++) {
x++;
sum+=func();
}
printf("%d", sum);
return 0;
}
📌 풀이
- func() 안에 있는 static int x = 0;
- static 은 지역변수처럼 보이지만 함수가 끝나도 메모리에 남아있음
- 따라서 초기화는 딱 한 번만 됨
- main() 실행 시작
- x = 1, sum = 0 으로 시작함
- for문 돌면서 func() 4번 호출
📌 func() 호출 흐름
- 첫 번째 호출 → x=0 에서 시작 → x+=2 → x=2 → 리턴값 2
- 두 번째 호출 → 이전 값 x=2 유지 → x+=2 → x=4 → 리턴값 4
- 세 번째 호출 → x=4 → x+=2 → x=6 → 리턴값 6
- 네 번째 호출 → x=6 → x+=2 → x=8 → 리턴값 8
📌 sum 계산
sum = 0 + 2 + 4 + 6 + 8
sum = 20
따라서 최종 출력은 20 임
📌 핵심 정리
- static 지역변수는 함수 안에 있어도 값이 사라지지 않고 누적됨
- 일반 지역변수였다면 매번 0부터 시작해서 결과는 8 이 됐을 것임
- static 덕분에 값이 계속 이어져서 최종 결과가 20 나옴
👉 출력값 : 20
한줄평
static 은 초기화 안되는거 기억하기
출처
'정보처리기사' 카테고리의 다른 글
| 2024년 정보처리기사 실기 3회 11번 문제 공부 및 풀이 (0) | 2025.10.02 |
|---|---|
| 2024년 정보처리기사 실기 3회 10번 문제 공부 및 풀이 (0) | 2025.10.02 |
| 2024년 정보처리기사 실기 3회 2번 문제 공부 및 풀이 (0) | 2025.09.27 |
| 2024년 정보처리기사 실기 2회 18번 문제 공부 및 풀이 (0) | 2025.09.25 |
| 2024년 정보처리기사 실기 2회 17번 문제 공부 및 풀이 (0) | 2025.09.25 |