POST

c언어 static 변수

static 변수는 지역변수와 전역변수 둘의 성질을 같이 가지고 있다고 보면 된다.


static 변수는 지역변수처럼 선언된 함수내에서만 사용이 가능하며,

단 한번만 초기화를 할뿐 전역 변수처럼 프로그램이 종료될때까지 메모리공간에 존재하게된다.


다른점은 지역변수와는 달리 해당 함수가 반환을 하더라도  소멸되지 않는다.


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


아래와 같은 예제를 살펴보자

결과를 보면알겠지만 num1은 static이라 한번 초기화될 뿐 값이 사라지지 않고 계속 유지 되지만.

num2는 simpleFunc 함수를 실행 할때마다 초기화되어 값이 그대로이다.

#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("stastic: %d, local:%d \n", num1, num2);

}


static은

선언된 함수 내에서만 접근이 가능하고 

1회 초기화된후 프로그램 종료시까지 메모리공간에 존재한다.

결과

static : 1, local : 1

static : 2, local : 1

static : 3, local : 1