본문 바로가기
IT/c언어

C 언어 정적 변수(Static Variable)

by 뉴코딩맨 2023. 7. 11.
정적 변수는 C 언어에서 사용되는 특별한 종류의 변수입니다. 정적 변수는 특정 함수나 블록의 범위에 한정되지 않고, 프로그램이 실행되는 동안 메모리에 유지됩니다. 이러한 특징으로 인해 정적 변수는 함수 호출과 관계없이 값이 유지되는 장점을 가지고 있습니다.
 
 

정적 변수의 선언과 사용

정적 변수는 함수 내부에서 선언될 수도 있고 함수 외부에서 선언될 수도 있습니다. 함수 내부에서 선언된 정적 변수는 해당 함수가 호출될 때마다 초기화되지 않고 이전 값이 유지됩니다. 예를 들어, 다음은 정적 변수의 선언과 사용의 예입니다.
 
#include <stdio.h>

void myFunction() {
    static int staticVariable = 0; // 정적 변수 선언

    printf("정적 변수 값: %d\n", staticVariable);

    staticVariable++; // 정적 변수 값 증가
}

int main() {
    myFunction();
    myFunction();
    myFunction();

    return 0;
}

 

위 예제에서 staticVariable은 myFunction 함수 내에서 선언된 정적 변수입니다. 함수가 호출될 때마다 정적 변수의 값이 증가하며, 이전 값이 유지됩니다.

 

 

정적 변수의 장점과 단점

정적 변수의 주요 장점은 값의 지속성과 초기화의 한정성입니다. 함수가 호출될 때마다 정적 변수의 값이 사라지지 않고 이전 값을 유지하므로, 이를 활용하여 데이터의 상태를 유지하거나 함수 간 데이터 공유를 할 수 있습니다. 또한, 정적 변수의 초기화는 한 번만 이루어지기 때문에 성능 상의 이점을 가질 수 있습니다.
 
하지만 정적 변수는 함수나 블록의 범위를 벗어나 프로그램이 종료될 때까지 메모리를 차지하므로, 메모리 사용량이 증가할 수 있습니다. 따라서 정적 변수를 사용할 때에는 메모리 사용에 유의해야 합니다. 또한, 정적 변수의 값을 다른 함수에서 직접 변경하는 것은 권장되지 않으며, 이를 통제하기 위해 관련 함수를 사용해야 합니다.
 

결론

C 언어에서 정적 변수는 특정 함수나 블록에 한정되지 않고, 프로그램이 실행되는 동안 메모리에 유지되는 변수입니다. 정적 변수를 사용하면 값의 지속성과 초기화의 한정성을 활용할 수 있으나, 메모리 사용량에 유의해야 합니다.
 

댓글