8강. 변수의 영역

학습개요

앞서 우리는 변수의 수명에 대해 배웠습니다. 그럼 수명이 있는 동안에는 무조건 변수를 사용할 수 있을까요? 안타깝게도 대부분의 프로그래밍 언어에서는 그렇지 않습니다. 이번 강의에서는 프로그램에서 변수를 사용할 수 있는 범위인 변수의 영역에 대해 알아봅니다. 우선 변수의 영역 및 이와 관련된 기본 개념을 알아본 후, 두 가지 영역 규칙인 정적 영역 규칙과 동적 영역 규칙에 대해 알아봅니다. 그리고 이름 충돌을 해결할 수 있는 이름 공간에 대해 알아봅니다.

학습목표

  1. 변수의 영역의 개념을 설명할 수 있다.
  2. 블록의 개념을 이해하고 블록과 변수의 관계를 설명할 수 있다.
  3. 정적 영역 규칙과 동적 영역 규칙의 개념과 차이점을 설명할 수 있다.
  4. 이름 공간의 개념을 설명할 수 있다.

정리하기

  1. 변수의 영역이란 프로그램에서 변수를 사용할 수 있는 범위를 의미한다.
  2. 블록은 영역을 구분해 주는 단위로, 프로그램 문장들의 묶음이면서 그 안에서 변수 선언이 가능하다.
  3. 지역변수는 블록 안에서 선언된 변수이고, 비지역변수는 블록 밖에서 선언되었지만 블록 안에서 사용될 수 있는 변수이다.
  4. 참조 환경은 한 위치에서 사용할 수 있는 모든 변수의 모음으로, 해당위치의 모든 지역변수와 모든 비지역변수로 구성된다.
  5. 영역 규칙은 변수의 참조 위치를 결정하는 방법이다. 특히 현재 블록에서 선언되지 않은 자유변수에 대해 어디에서 선언된 비지역변수인지 혹은 오류인지 확인한다.
  6. 정적 영역 규칙은 블록들의 정적 내포 관계를 이용하여 변수의 참조 위치를 찾는 방법으로, 컴파일 시점에 결정할 수 있다. 동적 영역 규칙은 블록들의 동적 내포 관계를 이용하며, 수행 시점에 결정할 수 있다.
  7. 영역 구멍은 비지역변수가 같은 이름의 지역변수 때문에 보이지 않는 영역을 의미한다.
  8. 정적 영역 규칙은 동적 영역 규칙에 비해 안정적이고 수행 속도가 빨라서 대부분의 언어에서 사용한다.
  9. 전역변수는 어떤 블록에도 포함되지 않는 곳에서 선언된 변수로 영역은 프로그램 전체가 된다.
  10. 이름 공간은 관련성이 높은 변수와 함수를 하나의 묶음으로 관리하는 영역으로, 변수명처럼 영역 자체의 이름을 갖는다. C++는 이름 공간을 지원한다.

Leave a Comment