본문 바로가기
IT/c언어

C언어 extern과 static 변수의 차이점

by 뉴코딩맨 2023. 7. 24.
C언어에서 변수를 선언할 때 extern과 static 키워드는 변수의 범위와 생명 주기를 결정하는 중요한 역할을 합니다. 이번 글에서는 C언어에서 extern과 static 변수의 차이점에 대해 알아보고, 각각의 특징과 사용법에 대해 자세히 설명하겠습니다.
 
 

1. extern 변수의 개념

extern 변수는 다른 파일에 정의된 전역 변수를 참조할 때 사용됩니다. 다른 파일에 정의된 변수를 참조해야 할 때 extern 키워드를 사용하여 해당 변수를 선언합니다. extern 변수는 선언만 해주고, 실제 메모리 공간은 변수가 정의된 파일에서 할당됩니다.
 

2. static 변수의 개념

static 변수는 특정 파일 내에서만 사용 가능한 지역 변수입니다. static 변수는 전역 변수처럼 프로그램이 실행될 때 생성되지만, static 변수는 해당 파일 내에서만 접근 가능하며 다른 파일에서는 참조할 수 없습니다.
 

3. extern 변수와 static 변수의 차이점

extern 변수와 static 변수의 주요 차이점은 다음과 같습니다.
 
  • 범위: extern 변수는 다른 파일에서 정의된 전역 변수를 참조할 때 사용하며, static 변수는 해당 파일 내에서만 접근 가능합니다.
  • 생명 주기: extern 변수는 변수가 정의된 파일에서 할당된 메모리를 참조하며, static 변수는 프로그램이 실행될 때 생성되고 프로그램이 종료될 때 소멸됩니다.

4. extern 변수와 static 변수의 사용 방법

extern 변수와 static 변수는 다음과 같이 사용합니다.
 

extern 변수 사용 방법

 

// file1.c
#include <stdio.h>

extern int globalVariable; // 다른 파일에 정의된 전역 변수를 참조하기 위해 extern 사용

void function() {
    printf("globalVariable 값: %d\n", globalVariable);
}

 

// file2.c
#include <stdio.h>

int globalVariable = 100; // 다른 파일에서 참조될 전역 변수 정의

int main() {
    function(); // extern을 통해 file1.c의 globalVariable을 사용
    return 0;
}

 

static 변수 사용 방법

 

#include <stdio.h>

void function() {
    static int count = 0; // 해당 파일 내에서만 접근 가능한 static 변수 선언
    count++;
    printf("count 값: %d\n", count);
}

int main() {
    for (int i = 0; i < 5; i++) {
        function();
    }
    return 0;
}

 

 

5. extern 변수와 static 변수의 예제

extern 변수와 static 변수를 조합한 예제를 살펴봅니다.
 
// file1.c
#include <stdio.h>

extern int globalVariable;

void printGlobal() {
    printf("다른 파일에서 정의된 globalVariable 값: %d\n", globalVariable);
}
 
// file2.c
#include <stdio.h>

static int staticVariable = 10; // 해당 파일 내에서만 접근 가능한 static 변수 선언

int globalVariable = 100; // 다른 파일에서 참조될 전역 변수 정의

int main() {
    printGlobal(); // extern을 통해 file1.c의 globalVariable을 사용
    printf("staticVariable 값: %d\n", staticVariable);
    return 0;
}

 

6. 결론

이번 글에서는 C언어에서 extern과 static 변수의 개념과 차이점에 대해 알아보았습니다. extern 변수는 다른 파일에서 정의된 전역 변수를 참조하는데 사용되며, static 변수는 해당 파일 내에서만 접근 가능한 지역 변수입니다. 적절히 활용함으로써 변수의 범위와 생명 주기를 효과적으로 관리할 수 있습니다.
 

댓글