Computer Science/전산용어

[광박사]Computer Science/전산용어 : [3] 스코프(Scope)

광박사 2019. 6. 17. 10:29

 

 

 

 

 

 

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)

   - 한 번 할당되면 프로그램 종료시까지 회수되지 않고 기억장소에서 살아있는 변수