UroA 개발 블로그

[C언어] static 변수란? 본문

Programming/C

[C언어] static 변수란?

UroA 2015. 12. 5. 14:18

static 변수란?

 

 

static 변수는 선언된 함수내에서만 사용이 가능하며(지역변수의 특성), 단 한번만 초기화를 하며 프로그램이 종료될때까지 메모리공간에 존재합니다(전역변수의 의 특성).

 

지역 변수와의 다른점은 해당 함수가 종료되어도 소멸되지 않는다는 점입니다.

이처럼 다른함수에서는 쓸 수 없지만 해당함수 내에서는 static 변수는 프로그램이 종료되기 전까지는 소멸되지 않습니다.

 

<예제>

 

#include <stdio.h>

 

void simpleFunc(void);

 

int main(void) {

int i;

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

simpleFunc();

}

return 0;

}

void simpleFunc(void) {

static int num1 = 0;

int num2 = 0;

num1++, num2++;

printf("static: %d, local: %d\n", num1, num2);

}

 

정적변수의 특징에 대하여 정리하고 마치도록 하겠습니다.

 

 1. 선언 위치는 지역변수와 같다. ( 순수 C언어의 경우 함수의 맨 처음 부분, C++은 어디서든지 가능 )
 2. 특정 선언 지역에서만 접근 할 수 있다.
 3. 메모리 공간에서 변수의 저장공간은 전역변수와 그 위치가 같다. (후에 메모리에 대하여 알아보겠습니다.)
 4. 초기값을 주지 않을 경우 항상 0 으로 초기화 되며 프로그램을 실행시킬 때 단 한번만 초기화된다.

Comments