2014-08-29 3 views
1

Если я передаю переменную как константу, она автоматически передается по ссылке?Если переменная передается как константа, она передается по ссылке?

procedure foo(const x : integer) 

Я уже могу передать переменную по ссылке, как это:

procedure foo(var y : integer); 

В идеале я бы хотел что-то вроде кода ниже:

procedure foo(const var z : integer) 

ответ

2

const не гарантия что значение фактически передается по ссылке.

Free Pascal поддерживает

procedure foo(constref z : integer); 

для этой цели: г всегда передается по ссылке в данном случае. Я не знаю ничего подобного в другом компиляторе pascal.

+0

Из любопытства недавние компиляторы Delphi (с Delphi XE4) используют декодер ['[Ref]'] (http://docwiki.embarcadero.com/RADStudio/XE4/en/Parameters_%28Delphi%29#Constant_Parameters) для этого. Вы можете написать там, например. 'procedure foo (const [Ref] Z: Целое число);'. – TLama

Смежные вопросы