Шаг 94.
Виды параметров и способы их передачи

    На этом шаге мы рассмотрим способы передачи параметров.

    При активизации процедуры/функции ей можно передавать параметры. При передаче необходимо следить, чтобы в операторе вызова были указаны все параметры, описанные в заголовке процедуры/функции.

    Параметры, указываемые в заголовке процедуры/функции при ее описании, называются формальными параметрами.

    Параметры, указываемые при вызове процедуры/функции, называются фактическими параметрами.

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

    Многие процедуры имеют несколько.параметров. Задача программиста - убедиться, что параметры, которые он указывает при вызове (фактические параметры), соответствуют по смыслу формальным параметрам. Компилятор может проверить только очевидные случаи - неправильное число параметров или несовместимость типов.

    Рассмотрим классификацию способов передачи параметров, реализация которых возможна в языках программирования.


    Замечание. Обращаем внимание, что это общая классификация, а не классификация параметров в Object Pascal. Введенные для классификации обозначения value, addr, in, out, inout, в Object Pascal не используются.

    Параметры различаются:

  1. По механизму передачи:
    • передача по значению (value);
    • передача по адресу (по ссылке) (addr);
  2. По взаимодействию вызывающей и вызываемой процедур/функций:
    • только как входной параметр (in);
    • только как выходной параметр (out);
    • как входной, так и как выходной параметр (inout).

    Соответственно этим различиям теоретически возможны 6 способов передачи параметров:

    1) value in;
    2) value out;
    3) value inout;
    4) addr in;
    5) addr out;
    6) addr inout.

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

    В Object Pascal реализованы первый (value in), четвертый (addr in) и шестой (addr inout) способы передачи параметров. Параметры вида value in называются параметрами-значениями, параметры addr inout - параметрами-переменными (ссылками), а параметры addr in - параметрами-константами.


    Две разновидности параметров (параметры-значения и параметры-переменные (ссылки)) являются стандартными для всех реализаций и версий языка Pascal. Третья разновидность (параметры-константы) была введена в последней версии предшественника языка Object Pascal - языке Borland Pascal 7.0.

    Со следующего шага мы начнем знакомиться с каждым из перечисленных способов передачи параметров.




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