Шаг 97.
Параметры-константы

    На этом шаге мы рассмотрим использование параметров-констант.

    При описании параметров-констант в заголовках процедур/функций перед идентификаторами таких параметров ставится ключевое const.

    Заголовок процедуры с описанными параметрами-константами имеет такой вид:

    procedure MyProc   (const Par1, Par2 :   Type1; const РаrЗ, Раr4 : Туре2);

    Приведем упрощенную схему и описание механизма работы параметров-констант:


Рис.1. Механизм передачи параметров

   

  1. При вызове процедуры/функции:
    1. выполняется выделение памяти только для локальных данных и для сохранения адресов фактических параметров-констант;
    2. выполняется копирование адресов (но не значений!) фактических параметров в выделенную для них память;
  2. Во время работы процедуры/функции:
    1. запрещено изменение значений формальных параметров-констант;
    2. использовать значения формальных параметров разрешено только в качестве исходных данных;
    3. значения формальных параметров, используя скопированные адреса, выбираются непосредственно из памяти фактических параметров.
  3. При окончании процедуры/функции:
    1. влияние вызываемой процедуры/функции на вызывающую через параметры-константы отсутствует;
    2. память, выделенная для работы процедуры/функции, очищается.

    В качестве фактического параметра-константы могут использоваться как переменные, так и константы различных типов. Не допускаются только файловые типы и типы, опирающиеся на файловый. Кроме того, запрещается выполнять присваивание формальным параметрам-константам и формальные параметры-константы не могут передаваться в качестве фактических параметров другим процедурам/функциям.

    Параметры-константы целесообразно использовать в тех случаях, когда требуется передавать структуры данных, занимающие большой размер памяти, но изменять исходные значения параметров с алгоритмической точки зрения недопустимо. В результате экономно используется оперативная память и одновременно гарантируется целостность исходных данных.

    На следующем шаге мы рассмотрим безтиповые параметры.




Предыдущий шаг Содержание Следующий шаг