Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
При передаче в функцию входных параметров, изменение которых не возвращается в вызывающую функцию, используется метод, который называется передачей по значению. Такие параметры по аналогии с языком Pascal можно назвать параметры-значения. Они имеют следующие особенности:
· для фактического и формального параметров компилятор отводит разные ячейки памяти;
· при выполнении программы содержимое каждого аргумента копируется в ячейку для соответствующего формального параметра, то есть при первом вызове в нашем примере выполняется Len=20, y=5 и ch=’*’, хотя это явно нигде не записывается;
· из первой особенности следует, что если в функции изменить формальный параметр, то это изменение не повлияет на значение переменной, используемой при вызове, то есть фактического параметра. Если бы в функции изменили y (например, там было бы записано y++), то значение соответствующей переменной Y в головной функции после второго вызова осталось бы без изменения, т. е. тем, что ввели;
· в качестве фактического параметра, соответствующего параметру-значению, может быть выражение соответствующего или совместимого типа. Например, функцию можно вызвать так: LINE2 (LEN*2, Y+1, ‘*’);. Как частный случай можно передавать константу, как показано при первом вызове, или переменную (см. второй вызов). При этом её имя, используемое при вызове, не обязательно должно отличаться, как в нашем примере, от имени формального параметра. В головной программе переменную для фактической длины символов можно было бы тоже назвать Len. Но и в этом случае для Len в main и для Len в функции Line2 компилятор резервирует разные ячейки памяти.
Дата публикования: 2015-02-18; Прочитано: 240 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!