Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Передача параметров по значению



При передаче в функцию входных параметров, изменение которых не возвращается в вызывающую функцию, используется метод, который называется передачей по значению. Такие параметры по аналогии с языком Pascal можно назвать параметры-значения. Они имеют следующие особенности:

· для фактического и формального параметров компилятор отводит разные ячейки памяти;

· при выполнении программы содержимое каждого аргумента копируется в ячейку для соответствующего формального параметра, то есть при первом вызове в нашем примере выполняется Len=20, y=5 и ch=’*’, хотя это явно нигде не записывается;

· из первой особенности следует, что если в функции изменить формальный параметр, то это изменение не повлияет на значение переменной, используемой при вызове, то есть фактического параметра. Если бы в функции изменили y (например, там было бы записано y++), то значение соответствующей переменной Y в головной функции после второго вызова осталось бы без изменения, т. е. тем, что ввели;

· в качестве фактического параметра, соответствующего параметру-значению, может быть выражение соответствующего или совместимого типа. Например, функцию можно вызвать так: LINE2 (LEN*2, Y+1, ‘*’);. Как частный случай можно передавать константу, как показано при первом вызове, или переменную (см. второй вызов). При этом её имя, используемое при вызове, не обязательно должно отличаться, как в нашем примере, от имени формального параметра. В головной программе переменную для фактической длины символов можно было бы тоже назвать Len. Но и в этом случае для Len в main и для Len в функции Line2 компилятор резервирует разные ячейки памяти.





Дата публикования: 2015-02-18; Прочитано: 240 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...