[C] static 변수에 대하여...

Austin·2024년 11월 24일

C언어

목록 보기
4/5
post-thumbnail

static 변수의 특징

메모리 할당 및 수명

  • static 변수는 프로그램이 시작될 때 메모리에 할당되며, 프로그램이 종료될 때까지 존재한다.
    일반 지역변수와 달리 함수가 종료되어도 메모리에서 사라지지 않는다.

초기화

  • static 변수는 프로그램 실행 시 단 한 번만 초기화된다.
  • 명시적으로 초기화하지 않으면 자동으로 0으로 초기화된다.

범위(Scope)

  • 함수 내부에서 선언된 static 변수는 해당 함수 내에서만 접근 가능해진다.
  • 전역으로 선언된 static 변수는 해당 소스 파일 내에서만 접근 가능해진다.

static 변수의 사용 예시

함수 내부의 static 변수

#include <stdio.h>

void counter() {
    static int count = 0;
    count++;
    printf("Count: %d\n", count);
}

int main() {
    counter(); // Count: 1
    counter(); // Count: 2
    counter(); // Count: 3
    return 0;
}

이 예제에서 count 변수는 함수가 호출될 때마다 이전 값을 유지하며 증가한다.

전역 static 변수

// file1.c
static int globalVar = 10;

void display() {
    printf("Global Variable: %d\n", globalVar);
}

이 경우 globalVar는 file1.c 내에서만 접근 가능하며, 다른 파일에서는 사용할 수 없다.

static 변수의 장단점

장점

  • 변수의 범위를 제한하여 이름 충돌을 방지한다.
  • 함수 간 상태를 유지할 수 있어 특정 상황에서 유용하다.

단점

메모리에 계속 남아있기 때문에, 과도한 사용 시 메모리 사용량이 증가할 수 있다.

주의사항

static 변수는 함수의 매개변수로 사용할 수 없다.
전역 변수에 static을 붙이면 해당 변수의 사용 범위가 파일 내로 제한된다.

0개의 댓글