0Pricing
C Academy · 강의

extern과 전역 변수

파일 간에 공유합니다

extern과 전역 변수은(는) CoddyKit의 무료 C Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

전역 변수

어떤 함수에도 속하지 않는 곳에서 선언한 변수는 파일 범위를 가지며 프로그램 전체 동안 존재합니다. 이를 전역 변수라고 합니다.

#include <stdio.h>
int counter = 0;
void bump(void) {
    counter++;
}
int main(void) {
    bump();
    bump();
    printf("counter = %d\n", counter);
    return 0;
}

전역 변수는 공유됩니다

파일 안의 모든 함수가 전역 변수를 읽고 쓸 수 있습니다. 편리하지만 잘못 사용하기도 쉽습니다.

#include <stdio.h>
int score = 100;
void penalty(void) { score -= 25; }
void bonus(void) { score += 10; }
int main(void) {
    penalty();
    bonus();
    printf("score = %d\n", score);
    return 0;
}

기본값 0으로 초기화

초기화식이 없는 전역 변수는 자동으로 0에서 시작합니다.

#include <stdio.h>
int total;
int main(void) {
    printf("total = %d\n", total);
    return 0;
}

extern 키워드

extern은 다른 곳에서 정의된 전역 변수를 선언합니다. 변수가 존재하지만 저장 공간을 할당하지 않는다는 사실을 컴파일러에 알립니다.

#include <stdio.h>
int shared = 5;
extern int shared;
int main(void) {
    printf("shared = %d\n", shared);
    return 0;
}

선언과 정의의 차이

정의는 저장 공간을 할당합니다. 선언은 이름만 지정합니다. extern 선언은 저장 공간을 할당하지 않습니다.

#include <stdio.h>
int value = 42;
int main(void) {
    extern int value;
    printf("value = %d\n", value);
    return 0;
}

파일 간 공유

여러 파일로 구성된 프로젝트에서는 한 .c 파일이 전역 변수를 정의하고, 다른 파일들이 헤더에서 extern을 사용하여 이를 참조합니다.

#include <stdio.h>
extern int globalCount;
int globalCount = 3;
int main(void) {
    printf("globalCount = %d\n", globalCount);
    return 0;
}

함수에도 extern을 사용할 수 있습니다

함수는 기본적으로 외부 연결을 가지므로, 함수 원형은 사실상 해당 함수를 extern으로 선언한 것과 같습니다.

#include <stdio.h>
extern void hello(void);
void hello(void) {
    printf("Hello from extern\n");
}
int main(void) {
    hello();
    return 0;
}

전역 변수의 수명

전역 변수는 프로그램 시작부터 종료까지 존재하므로 모든 함수 호출 사이에서 값이 유지됩니다.

#include <stdio.h>
int visits = 0;
void page(void) { visits++; }
int main(void) {
    page();
    page();
    page();
    printf("visits = %d\n", visits);
    return 0;
}

전역 변수의 위험성

어떤 코드든 전역 변수를 변경할 수 있기 때문에 오류의 원인을 추적하기 어려워집니다. 가능하면 값을 매개변수로 전달하는 방식을 사용하십시오.

#include <stdio.h>
int config = 1;
int compute(int input) {
    return input * config;
}
int main(void) {
    printf("%d\n", compute(8));
    return 0;
}

읽기 전용 전역 변수

const를 전역 변수와 함께 사용하면 아무도 변경할 수 없는 공유 상수를 만들 수 있습니다.

#include <stdio.h>
const int MAX_USERS = 50;
int main(void) {
    printf("MAX_USERS = %d\n", MAX_USERS);
    return 0;
}

실용적인 패턴

여러 함수가 읽는 전역 설정 값은 흔히 사용되며 허용할 만한 방식입니다.

#include <stdio.h>
int multiplier = 3;
int scale(int x) { return x * multiplier; }
int main(void) {
    printf("%d\n", scale(4));
    printf("%d\n", scale(7));
    return 0;
}

빠른 확인

extern과 전역 변수에 대한 이해도를 확인해 보십시오.

복습: extern과 전역 변수

전역 변수와 외부 연결에 대해 배웠습니다.

  • 전역 변수는 파일 범위 변수이며 프로그램 전체 수명을 가집니다
  • 기본값은 0이고 모든 함수가 공유합니다
  • extern은 다른 곳에서 정의된 전역 변수를 선언합니다
  • 정의는 저장 공간을 할당하고, 선언은 이름만 지정합니다
  • 숨은 결합을 피하려면 전역 변수는 꼭 필요한 경우에만 사용하십시오

자주 묻는 질문

“extern과 전역 변수” 강의는 무료인가요?

네 — “extern과 전역 변수” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C Academy 강의 전체를 잠금 해제할 수 있습니다. C Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“extern과 전역 변수”에서 뭘 배우나요?

파일 간에 공유합니다 브라우저에서 직접 실행하는 실습 코드로 C Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

C Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 C Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“extern과 전역 변수” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 C Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 C Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. auto와 지역 범위
  2. static 변수
  3. extern과 전역 변수
  4. register와 const
← C Academy(으)로 돌아가기