static 변수


1. 함수 내부 및 외부에 선언 가능하다.(전역, 지역)

2. 한번만 초기화 된다. (전역 변수의 특징)

3. 함수 내부에서 선언될 경우 함수 내에서만

    접근이 가능하다. (지역 변수의 특징)




void fct(){

static int val = 0;

val++;

printf("%d ", val);

}


int main(){

int i;

for(i = 0; i<5; i++)

fct();

}




1. fct() 함수가 끝나도 static 변수는 

메모리 상에서 지워 지지 않는다.


2. static 변수의 초기화는 단 한번.

때문에 함수가 다시 호출되도

초기화 부분은 무시하게 된다.


따라서 출력 결과는

1 2 3 4 5

가 된다.




프로그램 실행 전 컴파일 과정에서 메모리 공간을 할당 받고

전체 프로그램이 종료될 때까지 동일 메모리 공간을 보유한다.

--> 전역 변수의 특징과 같다. 전역 변수도 static 변수이다.




전역 변수와 static 변수의 차이점?

누구나 접근 가능한 전역 변수와는 달리

선언된 지역 내에서만 접근이 가능하다는 장점이 있다.



+ Recent posts