[광박사]Computer Science/전산용어 : [3] 스코프(Scope)
1. 변수를 특징 짓는 주요 속성
A. 변수 고유 속성들
: 이름(식별자), 주소(기억공간 위치), 타입(타입에 따라 연산도 달라짐), 값(value)
B. 변수가 수행되는 위치/시간에 의존적인 속성들
: 유효 범위(스코프, Scopre), 유효 시간(수명, Lifetime), 프로그램 환경(Program Environment)
2. 유효 범위 : 스코프/영역/범위 (Scope)
A. 변수 스코프(가시성, Visibility)
: 프로그램 내 변수에 접근할 수 있는 유효 범위/ 영역
- 정의된 변수가 보이는 유효 범위
- 통상, 변수 선언 이후부터 선언문이 속한 블록이 끝나는 부분까지
B. 위치에 따른 변수 스코프 구분
: 전역 변수(Global Variable) 또는 전역 스코프(Global Scope)
- 프로그램 전체 어느 곳에서도 사용 가능
- 통상, 블록(함수 등) 안과 밖 모두에서 사용가능한 변수
- 즉, 블록(함수 등) 밖 전역 스코프에서 선언/정의/사용되는 변수
: 지역 변수(Local Variable) 또는 지역 스코프(Local Scope)
- 통상, 블록(함수 등) 내에서만 선언되고 사용되는 변수
- 즉, 블록(함수 등) 안 지역 스코프에서 선언/정의/사용되는 변수
- 한편, 과거 C언어에서, 지역 변수의 선언 위치를, 블록 맨 처음에 위치해야만 했으나, 최근 컴파일러에서는 자동으로 알아서 처리하여, 그런 제한이 없어짐
- 만일, 전역 및 지역 변수의 명칭이 충돌하면, 지역 변수가 우선이 됨
C. 시간에 따른 변수 스코프 구분
: 정적 스코프 (정적 메모리 할당)
- 컴파일러 번역 시에 변수 영역이 결정됨 (어휘적 범위, Lexical Scope)
- 함수를 정의할 때, 구문 해석 만으로도, 어떤 변수가 그 함수 스코프에 있는지를 알 수 있음
: 동적 스코프 (동적 메모리 할당)
- 실행시에만 비로소 변수 영역이 결정점
- 함수를 실행할 때만, 비로소 어떤 변수가 그 함수 스코프에 있는지 알 수 있게 됨.
3. 유효 기간 : 수명(Lifetime)
A. 변수 수명
: 변수가 기억장소에 할당된 시점부터 반환되는 시점까지의 시간
B. 변수 수명 구분
: 자동 변수(Automatic Variable)
- 프로그램 제어가 블록(함수 등) 내에 진입할 때 기억장소 할당이 되고, 빠져나갈 때 기억장소 해체가 일어남
: 정적 변수(Static Variable)
- 한 번 할당되면 프로그램 종료시까지 회수되지 않고 기억장소에서 살아있는 변수