Энциклопедия Turbo Pascal. Главы 1-4 - Параметры-значения
ОГЛАВЛЕНИЕ
Параметры-значения
Параметры-значения передаются в одном направлении: в подпрограмму передается значение параметра, но любые изменения этого параметра не оказывают влияния на действительную переменную, которая использовалась при вызове подпрограммы. Подпрограмме передается не адрес этой переменной, а копия ее значения и поэтому сама переменная не изменяется. По существу процедуре и функции передается лишь некоторое значение.
Значения будут помещаться в стек при передаче параметров следующих типов:
- двоичного /булевского/;
- символьного;
- целого;
- целого длинного;
- целого короткого;
- байта;
- слова;
- вещественного;
- указателя;
- перечисления.
Для двойных слов сначала в стек помещается старшая часть значения и затем младшая часть.
Массивы и записи, размер которых превышает четыре байта, в действительности не передаются функции. Передается адрес /сегмент и смещение/ переменной. Сначала в стек помещается сегмент и затем смещение. /Массивы, размер которых меньше пяти байт непосредственно помещаются в стек/. Множества и строки тоже передаются с использованием указателей на действительные переменные. Поскольку для данных этих типов в функции передаются адреса, необходимо делать копии действительных данных, чтобы изменения данных, произведенные внутри функции, не повлияли на эти переменные вне функции.