'static 변수'에 해당되는 글 1건

  1. 2016.06.20 [c언어] Static 변수

 

 

Static 변수는 변수 선언 시 앞에 static을 추가하여 선언하여 사용하며, 다음과 같은 특징이 있습니다.

 

  1. 선언 위치는 지역변수와 같을 수 있다.
  2. 특정 선언 지역에서만 접근 할 수 있다.
  3. 메모리 저장공간에서 변수의 저장 공간은 전역변수와 그 위치가 같다.
  4. 초기값을 주지 않을 경우 항상 0으로 초기화 되며, 프로그램을 실행 시킬 때 단 한 번만 초기화 된다.

 

아래와 같은 코드가 있다고 가정하면서 위의 static의 특징을 살펴보겠습니다.

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

void call();

   

int main()

{

    call();

    call();

    call();

    return 0;

}

   

void call(void)

{

    static int count = 0;

    count ++;

    printf("%d ", count);

}

cs

 

 

위의 call함수에서 static int count라는 변수가 선언되었습니다. 4번에 의하면 초기화는 딱 한 번만 하므로, main문에서 3번 call이 호출되었다고, 매번 count가 0으로 초기화 되지는 않습니다. 이 점을 주의해야 합니다.

 

또한, 2번의 특징처럼 count라는 변수는 선언이 된 call함수에서만 사용이 가능하며, 다른 위치에서는 사용을 할 수 없습니다. 만약 다른 함수에서 사용하고 싶다면, global변수처럼 main문 밖에서 선언하게 되면, main에서도 call에서도 사용이 가능합니다. 그래서 선언 위치는 자유롭지만, 그에 따른 제약에 주의가 필요합니다.

 

3번의 설명처럼 전역변수와 변수의 저장 공간이 같습니다.

 

 

이러한 특징을 토대로 결과 값은

1 2 3 이 나오게 됩니다.

 

만약 call에서 static int count 대신…. int count로 일반 변수로 선언되었다면, (static이 아니라)

값은 1 1 1 이 됩니다.

 

이러한 static의 특징 때문에 저의 경우는 static으로 선언 한 것은 어떤 동작의 count를 하는 목적으로 사용하고 있습니다. 예를 들면 특정 동작이 몇번 반복되었는지를 기록하여, 그에 따른 처리를 할 때 static int count라는 변수를 만들어 그 동작을 기록하도록 합니다.

   

  

Posted by 고무함지
,