본문 바로가기

카테고리 없음

C : static 변수

static 변수의 특성

선언된 함수내에서만 접근이 가능하다.(지역변수 특성)

딱 1회 초기화되고 프로그램 종료시까지 메모리 공간에 존재한다.(전역변수 특성)


void ForStaticFunc(void)

{

static int num=0;

num++;

printf("%d \n",num);

}


int main(void)

{

int i;

for(i=0;,i<3,i++)

ForStaticFunc();

return 0;

}


위와 같은 예제를 실행할 경우


1

2

3


과 같이 출력된다.



함수 안에 있는 static 변수라 해도 프로그램이 실행되자마자 메모리에 올라간다.


그리고 메모리에 올라가면서 최초의 초기화는 한번만, 단 한번만 초기화가 이뤄지고 다시는 초기화되지 않는다.


따라서 ForStaticFunc 함수를 아무리 불러도 num이라는 static 변수는 0으로 초기화되지 않는 것이다.


함수를 불렀을 때 해당함수의 몸체에 있는 static 변수를 초기화 하는 문장은 없는거나 마찬가지다.