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

C 언어에서 정적(static) 변수 초기화하기 – 문법과 예제 총정리

C 언어에서 static 키워드가 사용되면 해당 변수나 함수는 프로그램의 전체 실행 기간 동안 메모리에 할당되며, 프로그램이 종료될 때까지 유지됩니다. 정적으로 선언된 함수는 같은 파일 내부에서 직접 호출할 수 있어, 외부 노출을 제한하는 용도로도 활용됩니다.

정적 변수의 주요 특징

  • 단 한 번만 초기화: 정적 변수는 프로그램 실행 중 딱 한 번만 초기화됩니다.
  • 프로그램 수명 동안 유지: 컴파일러는 정적 변수를 프로그램이 끝날 때까지 메모리에 보존합니다.
  • 선언 위치의 유연성: 정적 변수는 함수 내부 또는 외부 어디에서든 정의할 수 있습니다.
  • 블록 지역성: 함수 안에 선언된 정적 변수는 해당 블록(함수) 안에서만 접근할 수 있지만, 값은 함수 호출 사이에 계속 유지됩니다.
  • 기본값 0: 별도로 초기화하지 않으면 정적 변수의 기본값은 0으로 설정됩니다.

정적 변수 선언 문법

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

static 데이터타입 변수명 = 값;

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

  • 데이터타입(datatype) − int, char, float 등 변수의 자료형입니다.
  • 변수명(variable_name) − 사용자가 지정하는 변수의 이름입니다.
  • 값(value) − 변수를 초기화하는 값입니다. 생략하면 기본값인 0이 됩니다.

예제 코드

다음은 C 언어에서 정적 변수와 일반(비정적) 변수를 함께 사용하는 예제입니다.

#include <stdio.h>
int main() {
    static int a = 8;
    int b = 10;
    printf("Value of static variable : %d\n", a);
    printf("Value of non-static variable : %d\n", b);
    return 0;
}

실행 결과

Value of static variable : 8
Value of non-static variable : 10

코드 설명

위 프로그램에서는 두 개의 변수를 선언했습니다. 하나는 static 키워드로 선언한 정적 변수 a이고, 다른 하나는 일반 변수 b입니다. 두 변수 모두 선언과 동시에 값을 초기화한 후, printf() 함수를 통해 각각의 값을 화면에 출력합니다.

static int a = 8;
int b = 10;
printf("Value of static variable : %d\n", a);
printf("Value of non-static variable : %d\n", b);

두 변수의 결정적인 차이는 생명주기(lifetime)에 있습니다. 일반 변수 bmain() 함수가 실행될 때마다 새로 생성되고 함수가 끝나면 소멸되지만, 정적 변수 a는 프로그램 시작 시 한 번만 초기화되어 프로그램이 종료될 때까지 그 값이 메모리에 그대로 유지됩니다.

정적 변수의 실용적인 활용

이러한 특성 덕분에 정적 변수는 함수가 몇 번 호출되었는지 세는 호출 카운터, 이전 상태를 기억해야 하는 상태 저장 변수 등을 구현할 때 유용하게 사용됩니다. 반면, 프로그램 전체 수명 동안 메모리를 점유하므로 불필요하게 남발하면 메모리 효율이 떨어질 수 있다는 점도 함께 고려해야 합니다.