변수

  • 프로그램에서 처리할 데이터를 저장, 관리할 수 있도록 메모리를 추상화한 것

변수의 속성

  • 변수명
    • 변수의 이름, 식별자

  • 타입
    • 변수에 저장할 수 있는 데이터 집합의 종류, 자료형

  • 주소
    • 변수가 사용하는 메모리의 위치


    • 변수에 저장된 데이터
    • 수행시간 동안 변경될 수 있음

바인딩

  • 언어 구성 요소의 속성이 구체적으로 결정되는 것

바인딩이 일어나는 시점

  • 언어 정의 시점
    • 연산지의 의미, 수의 의미 등

  • 언어 구현 시점
    타입의 자릿수, 수의 표기법 등

  • 컴파일 시점
    변수의 타입 등

  • 링크 시점
    • 라이브러리 함수의 내용 등

  • 로드 시점
    • 변수의 주소 등

  • 프로그램 수행 시점
    변수의 값 등

바인딩 시각의 구분

  • 정적 바인딩
    • 프로그램 수행 시점에 바인딩의 변화가 없는 경우
    • 언어 정의시점, 언어 구현 시점, 컴파일 시점, 링크 시점, 로드 시점의 바인딩을 포함
    • 컴파일 방법에 적합

  • 동적 바인딩
    • 프로그램 수행 시점에 바인딩의 변화가 있는 경우
    • 실제 바인딩 시각이 프로그램 수행 시점인 경우
    • 유연한 프로그래밍이 가능
    • 인터프리터 방법에 적합

변수의 바인딩

  • 변수의 속성이 구체적으로 결정되는 것
  • 프로그램 수행 중에 변수가 사용되기 위해서는 변수의 속성이 바인딩되어야 함

바인딩 방법

  • 명시적 선언
    • 선언문에 명시된 이름으로 변수명을 바인딩

  • 묵시적 선언
    • 선언문 없음
    • 대입문 등에 처음 사용된 이름으로 변수명을 바인딩

타입 바인딩

  • 명시적 선언 ex) int x;
  • 묵시적 선언 ex) k=123;, k=’a’;

  • 정적 바인딩
    • 컴파일 시점에 구문 분석을 통해 타입을 판당
    • 명시적 선언과 묵시적 선언 모두 가능

  • 동적 바인딩
    • 변수의 타입을 고정하지 않음
    • 대입할 값에 맞추어 계속 변화시킴

주소 바인딩

  • 변수가 사용할 메모리가 할당되어 변수의 주소가 그 메모리의 주소로 바인딩되는 것
    • 할당 → 가용한 메모리 중 필요한 만큼의 공간을 변수에 배정하는 것
    • 해제 → 할당된 메모리를 변수로부터 회수하는 것

  • 변수의 수
    • 변수가 메모리를 할당받고 있는 기간

  • 자동 할당 ex) int x; double y;
  • 수동 할당 : 프로그래머가 지정한 크기만큼의 메모리를 할당

  • 정적 바인딩
    • 로드 시점에 정적 세그먼트의 주소를 바인딩

  • 동적 바인딩
    • 프로그램 수행 중 변수가 사용되는 시점에 동적 세그먼트의 주소를 바인딩

Updated: