Scope

(2018-11-23)

Lifetime

1. 변수를 특징짓는 주요 속성들은,변수 고유 속성들
     - 이름 (식별자), 주소 (기억공간 위치), 타입 (타입에 따라 연산도 달라짐), 값 (Value)

  ㅇ 변수가 수행되는 위치/시간에 의존적인 속성들                    ☞ C 언어 기억클래스 참조
     - 유효 범위(스코프,Scope), 유효 기간(수명,Lifetime), 프로그램 환경(Program Environment)


2. 유효 범위 : 스코프/영역/범위 (Scope)변수 스코프 (가시성,Visibility)
     - 프로그램변수에 접근할 수 있는 유효 범위/영역 
        . 정의된 변수가 보이는 유효 범위

  ㅇ 위치에 따른 변수 스코프 구분
     - 전역 변수(Global Variable) 또는 전역 스코프(Global Scope)
        . 프로그램 전체 어느 곳에서도 사용 가능
        . 통상, 블록(함수 등) 안과 밖 모두에서 사용가능한 변수
        . 즉, 블록(함수 등) 밖 전역 스코프에서 선언/정의/사용되는 변수
     - 지역 변수(Local Variable) 또는 지역 스코프(Local Scope) 또는 블록 스코프(Block Scope)
        . 통상, 블록(함수 등) 내에서 만 선언되고 사용되는 변수
        . 즉, 블록(함수 등) 안 지역 스코프에서 선언/정의/사용되는 변수
        . 한편, 과거 C 언어에서, 지역 변수선언 위치를, 블록 맨 처음에 위치해야 만 했으나,
          최근 컴파일러에서는 자동으로 알아서 처리하여, 그런 제한이 없어짐  ☞ 호이스팅 참조
     * 만일, 전역 및 지역 변수의 명칭이 충돌하면, 지역 변수가 우선이 됨

  ㅇ 시간에 따른 변수 스코프 구분
     - 정적 스코프 (정적 메모리 할당)
        . 컴파일러 번역 시에 변수 영역이 결정됨 (어휘적 범위, Lexical Scope)
        . 함수를 정의할 때, 구문 해석 만으로도,
          어떤 변수가 그 함수 스코프에 있는지를 알 수 있음
     - 동적 스코프 (동적 메모리 할당)
        . 실행시에 만 비로소 변수 영역이 결정점
        . 함수를 실행할 때 만, 비로소 어떤 변수가 그 함수 스코프에 있는지 알 수 있게됨


3. 유효 기간 : 수명 (Lifetime)변수 수명
     - 변수가 기억장소에 할당된 시점부터 반환되는 시점까지의 시간변수 수명 구분
     - 자동 변수(Automatic Variable)
        . 프로그램 제어가 블록(함수 등) 내에 진입할 때 기억장소 할당이 되고,
        . 빠져나갈 때 기억장소 해제가 일어남
     - 정적 변수(Static Variable)
        . 한 번 할당되면 프로그램 종료시까지 회수되지 않고 기억장소에서 살아있는 변수


4. 변수의 스코프(Scope) 및 수명(Lifetime)은 불가분의 관계를 갖음

  ㅇ 통상, 블록 구조에서는, 
     - 그 시작점에서 지역 변수가 기억장소에 할당되고, 끝점에서 회수됨
     - 이 경우에, 지역 변수의 스코프와 수명은 일치하게 됨

  ㅇ 그러나, 지역 변수가 정적 변수선언되는 경우(`static 변수명` 처럼)에는,
     - 스코프와 수명은 불일치 함                                  ☞ C 언어 기억 클래스 참조

  ㅇ 한편, 전역 변수와 정적 변수는, 수명은 같지만 스코프는 다름
     - 전역 변수와 정적 변수프로그램 실행 동안 유지된다는 점에서는,
        . 수명은 같지만, 스코프는 다음과 같이 서로 다름
     - 즉, 
        . 전역 변수의 스코프는, 프로그램 어느 부분에서든 참조 가능하지만,
        . 정적 변수의 스코프는, 선언된 블록(함수 등) 내에서 만 참조 가능


[변수 바인딩] 1. 변수 2. 변수 종류 3. 이름 4. 바인딩 5. 선언/정의/초기화 6. Scope,Lifetime 7. 참조 환경 8. 블록 구조 9. 좌변값
  1.   기술공통
  2.   기초과학
  3.   진동/파동
  4.   방송/멀티미디어/정보이론
  5.   전기전자공학
  6.   통신/네트워킹
  7.   정보기술(IT)
        1. 정보기술
    1.   전산기초
    2.   컴퓨터구조
    3.   프로그래밍
          1. 프로그램,프로그래밍
      1.   프로그래밍 언어론
            1. 프로그래밍 언어
        1.   구문
        2.   변수 바인딩
          1.   1. 변수
              2. 변수 종류
              3. 이름
              4. 바인딩
              5. 선언/정의/초기화
              6. Scope,Lifetime
              7. 참조 환경
              8. 블록 구조
              9. 좌변값
        3.   자료형/데이터형
        4.   부프로그램/함수/프로시저
        5.   예외,이벤트 처리
      2.   구조적 프로그래밍
      3.   객체지향 프로그래밍
      4.   자료구조
      5.   알고리즘
      6.   자료표현(알파벳/코드)
      7.   시스템 소프트웨어
      8.   프로그래밍언어 종류
      9.   프로그래밍 기타일반
    4.   데이터베이스
    5.   소프트웨어 공학
    6.   운영체제
    7.   정보보호/보안
    8.   IT 기타기술
  8.   공업일반(기계,재료등)
  9.   표준/계측/품질
  10.   기술경영

 
        최근수정     요약목록(시험중)     참고문헌