45f9d30a

Механизм передачи значения


В некоторых источниках4) можно встретить утверждение о том, что для параметра-константы, как и для параметра-переменной, не создается копии в момент вызова подпрограммы. Однако выполнение простейшей проверки

var a: byte; procedure prob(const c:byte); begin writeln(longint(addr(c))); {физ.адрес параметра с} end; begin a:=0; writeln(longint(addr(a))); {физ.адрес переменной а} prob(a); end.

доказывает обратное: физические адреса5) переменной а и параметра с различаются. Следовательно, в памяти эти переменные занимают разные позиции, а не одну, как было бы в случае параметра-переменной. Вы можете убедиться в этом самостоятельно, запустив данную программу в трех разных вариантах (для параметра-значения, параметра-переменной и параметра-константы), а затем сравнив результаты.




Начало  Назад  Вперед