Love Every Moment

〔C언어〕정적 변수(Static Variable)란? 본문

PROGRAMMING::LANGUAGE/C

〔C언어〕정적 변수(Static Variable)란?

해 송 2021. 5. 19. 19:38
반응형

 

 

1. 변수의 종류

 

(1) 지역 변수(Local Variable)

  • 프로그램 내의 변수가 선언된 함수에서만 사용 가능한 변수
  • 함수가 시작할 때에 메모리가 할당되고 함수가 끝날 때에 메모리가 해제됨
  • 스택 영역에 저장되며 함수가 끝나면 자동 삭제됨
  • 따라서 함수 실행이 끝나면 변수에 저장된 값은 사라짐

 

(2) 전역 변수(Global Variable)

  • 함수 밖에서 선언되어 주어진 프로그램 내의 어느 함수에서나 사용 가능한 변수
  • 프로그램이 시작할 때에 메모리가 할당되고 프로그램이 끝날 때에 메모리가 해제됨
  • 컴파일 시간에 데이터 영역에 메모리를 할당하여 저장되며 프로그램이 끝나면 자동 삭제됨
  • 따라서 프로그램이 끝날 때까지 변수 안의 값이 유지됨

 

(3) 정적 변수(Static Variable)

  • 지역 변수의 특성과 전역 변수의 특성을 합친 변수
  • 특정 함수에만 사용 가능하면서도 함수가 끝나더라도 값이 그대로 유지됨
  • 따라서 프로그램이 끝날 때까지 변수 안의 값이 유지됨
  • 모든 전역 변수들은 정적 변수라고 할 수 있다
  • 컴파일 시간에 데이터 영역에 메모리를 할당하여 저장되며 프로그램이 끝나면 자동 삭제됨

 


 

2.  정적 변수의 사용 예시

 

#include <stdio.h>

void	ring();

int		main(void)
{
    ring();
    ring();
    ring();
    return (0);
}

void	ring()
{
    static int	man = 0;
    
    ++man;
    printf("현재 대기 인원은 %d 명 입니다.\n", man);
}

 

만약 man 의 자료형을 static int 이 아니라 int 로 지정했다면,

ring() 이 실행될 때마다 man 의 값이 자동 삭제되어 1 만 출력되게 된다.

하지만 정적 변수를 이용하면 프로그램이 끝날 때까지 값이 남아있으므로 1, 2, 3 이 출력된다.

 

만약에   static int   man;  처럼 초기값을 지정하지 않는다면 0 으로 자동으로 초기화된다.

 

참고하면 좋은 글:

 

 

C 언어 코딩 도장: 79.2 정적 변수 선언하기

정적 변수를 알아보기 전에 먼저 자동 변수로 예제를 작성해보겠습니다. 다음 내용을 소스 코드 편집 창에 입력한 뒤 실행해보세요. variable.c #include void increaseNumber() { int num1 = 0; // 변수 선언 및

dojang.io

컴퓨터 코딩 프로그래밍 교육

반응형
Comments