[C] 지역변수와 전역변수
📌 들어가며
변수는 “어디서든 쓸 수 있는” 게 아니다. 어디에 선언했느냐에 따라 쓸 수 있는 범위(scope)가 달라진다. 이번 글에서는 지역변수(local)와 전역변수(global)의 차이를 정리한다.
1. 지역변수 (local variable)
지역변수란? 어떤 블록(
{ }) 안에서 선언된 변수. 선언 이후 그 블록 안에서만 사용할 수 있고, 블록이 끝나면 사라진다. 이를 지역 범위(local scope)를 갖는다고 한다.
두 개의 블록이 있다고 하자.
1
2
3
4
5
6
7
8
9
{ // 첫 번째 블록
int grade, a; // 이 블록 안에서만 유효
...
} // 블록이 끝나면 grade, a 소멸
{ // 두 번째 블록
int age; // 이 블록 안에서만 유효
// grade 출력? → 사용 불가 (이미 사라짐)
}
- 첫 번째 블록의
grade,a는 그 블록에서만 사용 가능하다. - 따라서 두 번째 블록에서
grade를 출력하면 나오지 않는다. - 반대로 두 번째 블록의
age는 두 번째 블록 안에서만 사용할 수 있다.
2. 전역변수 (global variable)
전역변수란? 함수 밖에서 선언된 변수. 선언된 이후 그 아래의 어느 곳에서나 사용할 수 있다.
1
2
3
4
5
6
7
int YEAR; // main() 밖에서 선언 → 전역변수
int main()
{
// YEAR 사용 가능
}
// main이 끝나도 YEAR는 계속 유효
main() 함수에 들어가기 전에 정수 타입 변수 YEAR를 선언하면, 이렇게 선언된 변수는 메인 함수가 끝나도 계속 사용 가능하다.
📝 정리
| 구분 | 지역변수 | 전역변수 |
|---|---|---|
| 선언 위치 | 블록({ }) 안 | 함수 밖 |
| 사용 범위 | 선언된 블록 안에서만 | 선언 이후 어디서나 |
| 수명 | 블록이 끝나면 소멸 | 프로그램 종료까지 유지 |
변수를 쓸 수 없다는 오류를 만나면 “이 변수가 지금 이 블록의 scope 안에 있나?”를 먼저 떠올리면 된다.
This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.