Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C 언어의 정적(Static) 변수 완벽 정리: 개념부터 예제까지

C 언어의 정적(Static) 변수란?

정적 변수(static variable)는 프로그램 실행 중 단 한 번만 초기화되며, 컴파일러가 프로그램이 종료될 때까지 해당 변수를 메모리에 유지합니다. 정적 변수는 함수 내부 또는 외부 어디에서든 정의할 수 있으며, 선언된 블록 안에서만 접근 가능한 지역성을 가집니다.

정적 변수의 핵심 특징을 정리하면 다음과 같습니다.

  • 초기화 횟수: 프로그램 실행 도중 단 한 번만 초기화됩니다.
  • 생명 주기: 프로그램이 종료될 때까지 메모리에 유지됩니다.
  • 기본값: 별도로 값을 지정하지 않으면 0으로 초기화됩니다.
  • 접근 범위: 함수 내부에 선언하면 해당 블록에, 함수 외부에 선언하면 파일 전체로 범위가 제한됩니다.

정적 변수 선언 문법

C 언어에서 정적 변수를 선언하는 기본 문법은 다음과 같습니다.

static datatype variable_name = value;

각 구성 요소의 의미는 아래와 같습니다.

datatype − 변수의 자료형을 나타냅니다. 예: int, char, float 등

variable_name − 사용자가 직접 지정하는 변수의 이름입니다.

value − 변수를 초기화하는 값입니다. 생략하면 기본값인 0으로 초기화됩니다.

예제 코드

다음은 C 언어에서 정적 변수를 사용하는 예제입니다. 자동(auto) 변수와 정적 변수의 차이를 함께 확인해 보세요.

#include <stdio.h>

int main() {
    auto int a = -28;
    static int b = 8;

    printf("자동 변수 a의 값 : %d\n", a);
    printf("정적 변수 b의 값 : %d\n", b);

    if(a != 0)
        printf("정적 변수와 자동 변수의 합 : %d\n", (b + a));

    return 0;
}

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

자동 변수 a의 값 : -28
정적 변수 b의 값 : 8
정적 변수와 자동 변수의 합 : -20

정리

정적 변수는 함수가 여러 번 호출되더라도 이전 값이 그대로 유지되므로, 호출 횟수 카운팅이나 상태 저장 등에 유용하게 활용됩니다. 일반 자동 변수와 달리 스택이 아닌 데이터 영역에 저장되기 때문에 프로그램 전체 실행 기간 동안 유효하다는 점을 꼭 기억하세요.