본문 바로가기

Programming/C Language

static 변수 (static variable)

이번에 설명할 변수는 스테틱 변수다.

static은 전역변수와 지역변수 모두 선언을 추가할 수 있다.
이번에는 지역변수에 추가하는 상황을 설명할 것 이다!

우리가 아는 지역변수는 접근의 범위가 선언된 함수 내에서만으로 제한되어져 있다.
지역변수에 static 선언을 하게되면 지역변수와 전역변수의 특성을 둘다 가질수 있다.

static 지역변수의 특성 


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

- 한번마나 초기화되고 프로그램 종료 시까지 메모리 공간에 존재 ( 전역변수 특성 )


즉 , 접근의 범위가 전역변수보다 좁으나 전역변수의 risk를 제거하는 특성을 지닌다 , 훨씬 안정적이다.

다음 예제를 통해 전역변수의 특성을 알아보도록 하자


4행에서 simplefunc이라는 함수를 선언하고 정의한다.
첫 변수로 static선언을 한 지역변수 num1을 0으로 초기화한다.
그 후 num2라는 지역변수를 0으로 초기화한다.
각각의 변수에 증가연산자를 통해 1씩 더한 후 , 출력하도록 함수를 정의했다.

13행 main함수를 시작한다.

반복문을 통해 앞서 정의한 함수 simplefunc()를 호출한다.

우리가 배운 지역변수는 선언된 함수가 종료되면 그와 동시에 메모리 공간에서 사라진다.
그대로 응용하면 , 출력값은 num1과 num2둘다 모두 1로 출력될 것이다.

결과값에 주목하도록 하자!



우리의 예상과는 다르게 static선언을 한 변수는 전역변수 마냥 메모리 공간에 계속 존재하여 값이 계속 올라감을 확인할 수 있다.

이것이 static 변수다! (개인적으로 매우 좋아함...ㅎㅎ)

즉 , 전역변수와 비슷하게 전역변수와 동일한 시기에 할당되고 소멸한다 , 다만 차이점이 있다면 접근의 범위가 simplefunc()로 제한된다.


결과적으로 , 우리가 프로그램을 짤때 프로그램이 실행되는 동안에 계속해서 유지해야 할 변수가 있다면 전역변수를 선택하자
다만 그 변수에 접근하는 영역이 하나의 함수로 제한된다면 , static 지역변수의 선언을 고려해볼 가치가 있다!

'Programming > C Language' 카테고리의 다른 글

char형 배열 , 문자열  (0) 2017.10.31
1차원 배열  (0) 2017.10.31
전역 변수 (Global Variable)  (0) 2017.10.31
지역 변수 (Local Variable)  (0) 2017.10.31
함수 정리  (1) 2017.10.30