История изменений
Исправление den73, (текущая версия) :
Я бы советовал в психологию не углубляться. Если ты такой умный, то как называется передача VAR параметров? Вот цитата из определения языка. Я думаю, что это передача по ссылке, но 100% уверенности нет.
Формальные параметры суть идентификаторы, объявленные в списке формальных параметров процедуры. Они соответствуют фактическим параметрам, указанным в вызове процедуры. Соответствие между формальными и фактическими параметрами устанавливается при вызове процедуры. Есть два вида параметров: параметры-значения и параметры-переменные, последние отмечены в списке формальных параметров одним из описателей VAR, IN или OUT. Параметры-значения представляют собой локальные переменные, которым в качестве начального значения присваивается значение соответствующего фактического параметра. Параметры-переменные соответствуют фактическим параметрам, являющимся переменным, и они представляют эти переменные. Параметры-переменные могут использоваться только для ввода данных (IN), только для вывода данных (OUT) или для ввода и вывода (VAR). Описатель IN можно использовать только для параметров, являющихся массивами или записями. Внутри процедуры IN-параметры доступны только для чтения. Как и локальные переменные, OUT-параметры указательных или процедурных типов инициализируются в NIL.
Но из этого видно, что сама по себе функция может обрабатывать и VAR параметры, и не VAR. Кроме того, в присваивании a и b могут быть указателями на совместимые строковые типы и я пока не знаю, трогает ли функция CheckBuffering только параметры строки (на самом деле строка - это array of char) или указатели на них тоже. Кроме того, в отличие от Си, если формальный параметр - указатель, то при каждом использовании его не нужно разыменовывать, и это ещё одна «магия компилятора». Ты всё ещё уверен, что это всё равно назвается «передача по значению»?
Вносить конкретные типы я считаю, на данном этапе надо, поскольку перевод делается с целью разобраться, что к чему. В этом случае некая избыточность вполне приемлема. Потом можно будет уточнить, переименовать.
Исправление den73, :
Я бы советовал в психологию не углубляться. Если ты такой умный, то как называется передача VAR параметров? Вот цитата из определения языка. Я думаю, что это передача по ссылке, но 100% уверенности нет.
Формальные параметры суть идентификаторы, объявленные в списке формальных параметров процедуры. Они соответствуют фактическим параметрам, указанным в вызове процедуры. Соответствие между формальными и фактическими параметрами устанавливается при вызове процедуры. Есть два вида параметров: параметры-значения и параметры-переменные, последние отмечены в списке формальных параметров одним из описателей VAR, IN или OUT. Параметры-значения представляют собой локальные переменные, которым в качестве начального значения присваивается значение соответствующего фактического параметра. Параметры-переменные соответствуют фактическим параметрам, являющимся переменным, и они представляют эти переменные. Параметры-переменные могут использоваться только для ввода данных (IN), только для вывода данных (OUT) или для ввода и вывода (VAR). Описатель IN можно использовать только для параметров, являющихся массивами или записями. Внутри процедуры IN-параметры доступны только для чтения. Как и локальные переменные, OUT-параметры указательных или процедурных типов инициализируются в NIL.
Но из этого видно, что сама по себе функция может обрабатывать и VAR параметры, и не VAR. Кроме того, в присваивании a и b могут быть указателями на совместимые строковые типы и я пока не знаю, трогает ли функция CheckBuffering только параметры строки (на самом деле строка - это array of char) или указатели на них тоже. Ты всё ещё уверен, что это всё равно назвается «передача по значению»?
Вносить конкретные типы я считаю, на данном этапе надо, поскольку перевод делается с целью разобраться, что к чему. В этом случае некая избыточность вполне приемлема. Потом можно будет уточнить, переименовать.
Исправление den73, :
Я бы советовал в психологию не углубляться. Если ты такой умный, то как называется передача VAR параметров? Вот цитата из определения языка. Я думаю, что это передача по ссылке, но 100% уверенности нет.
Формальные параметры суть идентификаторы, объявленные в списке формальных параметров процедуры. Они соответствуют фактическим параметрам, указанным в вызове процедуры. Соответствие между формальными и фактическими параметрами устанавливается при вызове процедуры. Есть два вида параметров: параметры-значения и параметры-переменные, последние отмечены в списке формальных параметров одним из описателей VAR, IN или OUT. Параметры-значения представляют собой локальные переменные, которым в качестве начального значения присваивается значение соответствующего фактического параметра. Параметры-переменные соответствуют фактическим параметрам, являющимся переменным, и они представляют эти переменные. Параметры-переменные могут использоваться только для ввода данных (IN), только для вывода данных (OUT) или для ввода и вывода (VAR). Описатель IN можно использовать только для параметров, являющихся массивами или записями. Внутри процедуры IN-параметры доступны только для чтения. Как и локальные переменные, OUT-параметры указательных или процедурных типов инициализируются в NIL.
Но из этого видно, что сама по себе функция может обрабатывать и VAR параметры, и не VAR. Кроме того, в присваивании a и b могут быть указателями на совместимые строковые типы и я пока не знаю, трогает ли функция CheckBuffering только параметры строки (на самом деле строка - это array of char) или указатели на них тоже. Ты всё ещё уверен, что это всё равно назвается «передача по значению»?
Вносить конкретные типы я считаю, на данном этапе надо, поскольку перевод делается с целью разобраться, что к чему. В этом случае некая избыточность вполне приемлема.
Исходная версия den73, :
Я бы советовал в психологию не углубляться. Если ты такой умный, то как называется передача VAR параметров? Вот цитата из определения языка. Я думаю, что это передача по ссылке, но 100% уверенности нет.
Формальные параметры суть идентификаторы, объявленные в списке формальных параметров процедуры. Они соответствуют фактическим параметрам, указанным в вызове процедуры. Соответствие между формальными и фактическими параметрами устанавливается при вызове процедуры. Есть два вида параметров: параметры-значения и параметры-переменные, последние отмечены в списке формальных параметров одним из описателей VAR, IN или OUT. Параметры-значения представляют собой локальные переменные, которым в качестве начального значения присваивается значение соответствующего фактического параметра. Параметры-переменные соответствуют фактическим параметрам, являющимся переменным, и они представляют эти переменные. Параметры-переменные могут использоваться только для ввода данных (IN), только для вывода данных (OUT) или для ввода и вывода (VAR). Описатель IN можно использовать только для параметров, являющихся массивами или записями. Внутри процедуры IN-параметры доступны только для чтения. Как и локальные переменные, OUT-параметры указательных или процедурных типов инициализируются в NIL.
Но из этого видно, что сама по себе функция может обрабатывать и VAR параметры, и не VAR. Кроме того, в присваивании a и b могут быть указателями на совместимые строковые типы и я пока не знаю, что при этом будет. Ты всё ещё уверен, что это всё равно назвается «передача по значению»?