static 변수는 초기화를 1번만 실행한다.
따라서
int val =0; 일떄와
static int val = 0;일떄의 결과는 달라진다.

val = 0 일경우는 지역변수로서
for문을 돌면서 fac()가 5번실행되는데
val = 0; 초기화후 val++ 후 val출력(1)
다시 val = 0 초기화 되기 떄문에 1 1 1 1 1 이 출력된다.
static int val = 0;인경우는
static 변수는 지역변수더래도 해당 블록내에서 전역변수처럼 사용되기 때문에
0으로 초기화되지 않고 1씩 증가하여 1 2 3 4 5가 출력된다.
'OS > Linux' 카테고리의 다른 글
[Linux/C] 배열은 포인터다! (1) | 2022.09.13 |
---|---|
[C/Linux] 배열의 선언 (0) | 2022.09.12 |
[Linux/C] 파일 입출력1-1(표준입출력) (0) | 2022.05.25 |
[Linux/C] 파일 입-출력2 (0) | 2022.05.25 |
[Linux/C] Makefile (1) | 2022.05.19 |