Post

[C] 지역변수와 전역변수

📌 들어가며

변수는 “어디서든 쓸 수 있는” 게 아니다. 어디에 선언했느냐에 따라 쓸 수 있는 범위(scope)가 달라진다. 이번 글에서는 지역변수(local)전역변수(global)의 차이를 정리한다.


1. 지역변수 (local variable)

지역변수란? 어떤 블록({ }) 안에서 선언된 변수. 선언 이후 그 블록 안에서만 사용할 수 있고, 블록이 끝나면 사라진다. 이를 지역 범위(local scope)를 갖는다고 한다.

Desktop View

두 개의 블록이 있다고 하자.

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.