#include <stdio.h>
void abc(void);
int main()
{
abc();
return 0;
}
void abc(void)
{
static int i=1;
if(i>5) return;
printf("%d회",i);
i=5;
abc();
}
내가 생각한것과 결과를 써볼까해..
먼저 abc() 함수 안에 abc함수가 있는 재귀함수인데...
그러면 무한 반복되자나?
그래서 static변수를 써 놓고 (static은 한번 초기화된뒤 재 초기화가 안되자나)
if 조건을 달아서 끝내려고 i>5 조건이면 리턴하라고 써놨지.
프린트는 확인차 써놓은거니 신경 안써도 되고..
변수 i 값을 i=5로 바꿧어.
자 정리해보면 static 초기화 한번 된다는걸 이용해서 재귀함수라도 내가 i 변수 값을 5로 놓으면
다음 함수시 static int i=1 이라는 초기화 과정은 자연히 무시가 되면서 i 값은 5로 유지가 되게 해서
if 함수를 만나면서 리턴이 되서 함수가 종료되게 하려는 로직 이었지...
근데 실행결과는 어떠냐면... 5회5회5회5회5회5회5회5회5회5회5회5회5회5회5회5회5회5회
5회5회5회5회5회5회5회5회5회5회5회5회5회5회5회5회5회5회5회5회5회5회5회5회5회5회5회5회5회....
멈추질 않아... 난 나름대로 static 선언을 제대로 이해하고 있다고 생각했거든?
내가 생각한게 틀린건가?
static이란 한번 초기화 해 놓으면 재초기화는 되지 않고 넘어가며 static이 써진 중괄호 내에서는
전역변수처럼 계속 관여한다는 이론아닌가?
5>5가 참이냐 거짓이냐
함수 재귀하기전에 i=5니까 계속 5잖아
그러니까 5가 5보다 크냐? 아님요. 리턴좆까 상황
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
아놔 진지하게 읽었는데 아오, 앞으론 댓글부터 봐야지