Трудно разобрать что-то из вопроса в его нынешнем виде.
Однако вопрос, кажется, имеет некоторый смысл, если мы предположим, что OP - это , спрашивающий, как эмулировать вызов по ссылке (не по значению) в примере кода.
Итак ... Фактический код передает параметр в three()
по значению. three()
, похоже, пытается сохранить значение в глобальной переменной, прежде чем вызвать two()
, что, в свою очередь, изменит глобальную переменную.
Но глобальная переменная фактически используется для передачи значения, поэтому хитрость в том, что после передачи глобального значением в three()
глобальное изменение в конечном итоге будет изменено, как если бы оно было передано по ссылке.
Только есть небольшой вопрос (который, кажется, составляет целую проблему): как обращаться к глобальному изнутри three()
, поскольку имя параметра совпадает с именем глобального?
Я не знаю, какая версия Pascal должна запускать этот код, но если компилятор совместим с семейством TP / Delphi и если имена переменных должны быть оставлены без изменений, тогда я попробую единственный способ, которым я знаю пока что: one.x
. В частности, эта строка в реализации three()
x:=x+5;
Я бы изменил на
one.x:=x+5;
Итак, глобал здесь получает значение параметра, увеличенное на 5, и вызывает two()
, и two()
снова изменяет глобал.