#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이 써진 중괄호 내에서는
전역변수처럼 계속 관여한다는 이론아닌가?