C언어에서 변수를 선언할 수 있는 위치에 따라 지역 변수와 전역 변수로 나눌 수 있습니다.
이 둘은 프로그램에서 사용되는 범위(scope)와 생존 기간(lifetime)이 다릅니다.
변수의 동작을 정확히 이해하기 위해서는 이 차이를 잘 구분할 줄 알아야 합니다.
● 지역 변수란?
지역 변수는 함수 내부에 선언되며, 그 함수 안에서만 유효합니다.
void show() {
int x = 10; // 지역 변수
printf("x: %d\n", x);
}
- 다른 함수에서는 이 변수에 접근할 수 없습니다.
- 함수가 끝나면 변수도 함께 사라집니다.
● 전역 변수란?
전역 변수는 함수 밖에서 선언되며, 모든 함수에서 공유 가능합니다.
int count = 0; // 전역 변수
void increment() {
count++;
}
int main(void) {
increment();
printf("count: %d\n", count);
return 0;
}
- 전역 변수는 프로그램이 시작될 때 생성되어 종료 시까지 유지됩니다.
- 여러 함수에서 값을 공유하거나 누적할 때 사용됩니다.
● 지역 변수와 전역 변수 이름이 같을 때
int num = 10; // 전역 변수
void test() {
int num = 20; // 지역 변수
printf("%d\n", num); // 지역 변수가 우선
}
함수 안에서 같은 이름의 지역 변수가 있으면, 전역 변수는 가려지게 됩니다(우선순위 ↓).
지역 변수는 함수 안에서만 사용할 수 있어 안전하고 예측 가능한 코드를 만들 수 있습니다.
반면 전역 변수는 공유와 누적에는 편리하지만, 잘못 사용하면 프로그램의 복잡성을 증가시킬 수 있습니다.
적절한 상황에 맞게 두 변수를 사용하는 방법을 연습해봅시다.
● 실습 문제
문제 1
함수 show 내부에서만 사용하는 지역 변수 a를 선언하고 출력하세요.
문제 2
전역 변수 count를 선언하고, 두 함수에서 이 값을 증가시킨 뒤 출력하세요.
문제 3
함수 안에 선언된 변수는 다른 함수에서 사용할 수 있는지 설명해보세요.
문제 4
지역 변수와 전역 변수의 이름이 같을 때 어떤 값이 출력되는지 확인하는 코드를 작성하세요.
문제 5
전역 변수를 남용할 경우 생길 수 있는 문제점 한 가지를 설명해보세요.
▶ 정답 확인하기
정답 1
void show() {
int a = 5;
printf("a: %d\n", a);
}
정답 2
int count = 0;
void increase() {
count++;
}
void add() {
count += 2;
}
int main(void) {
increase();
add();
printf("count: %d\n", count); // 결과: 3
return 0;
}
정답 3
아니요. 지역 변수는 선언된 함수 안에서만 사용할 수 있습니다.
다른 함수에서는 그 변수에 접근할 수 없습니다.
정답 4
int value = 100;
void test() {
int value = 200;
printf("%d\n", value); // 출력: 200 (지역 변수가 우선)
}
정답 5
전역 변수를 남용하면, 여러 함수가 동시에 값을 수정할 수 있어
버그가 생기거나 디버깅이 어려워질 수 있습니다.
'프로그래밍언어 > C언어[초급]' 카테고리의 다른 글
[C언어][초급] Chapter39. 1차원 배열 선언과 초기화 – 배열을 만드는 기본 문법 익히기 (1) | 2025.04.18 |
---|---|
[C언어][초급] Chapter38. 배열이란? – 여러 값을 한 번에 저장하는 방법 (0) | 2025.04.18 |
[C언어][초급] Chapter36. 함수의 반환값 – 함수가 결과를 되돌려주는 방법 (2) | 2025.04.18 |
[C언어][초급] Chapter35. 함수의 매개변수 – 함수에 값을 전달하는 방법 정리 (0) | 2025.04.18 |
[C언어][초급] Chapter34. 함수 호출 방법 – 정의한 함수를 실행하는 정확한 방식 (0) | 2025.04.18 |