Обмен информацией между вызываемой и вызывающей функциями осуществляется с помощью механизма передачи параметров.
Список_переменных, указанный в заголовке функции называется формальными параметрами или просто параметрами функции.
Список_переменных в операторе вызова функции это фактические параметры или аргументы.
Механизм передачи параметров обеспечивает замену формальных параметров фактическими параметрами, и позволяет выполнять функцию с различными данными.
Количество, типы и порядок следования формальных и фактических параметров должны совпадать.
Передача параметров выполняется так:
· вычисляются выражения, стоящие на месте фактических параметров;
· в памяти выделяется место под формальные параметры, в соответствии с их типами;
· формальным параметрам присваиваются значения фактических параметров;
· выполняется проверка типов и при необходимости выполняется их преобразование, при несоответствии типов выдается диагностическое сообщение.
Передача параметров в функцию может осуществляться по значению и по адресу.
|
|
При передаче данных по значению функция работает с копиями фактических параметров, и доступа к исходным значениям аргументов у нее нет.
При передаче данных по адресу функция обращается к адресам фактических параметров и имеет доступ к ячейкам памяти, в которых хранятся значения аргументов.
Таким образом, данные, переданные по значению, функция изменить не может, в отличие от данных, переданных по адресу.
Возврат результата с помощью оператора return
Возврат результата из функции в вызывающую ее функцию осуществляется оператором
return (выражение);
Работает оператор так:
· вычисляется значение выражения, указанного после return и преобразуется к типу возвращаемого функцией значения;
· выполнение функции завершается, а вычисленное значение передается в вызывающую функцию;
· операторы, следующие в функции за оператором return, игнорируются;
· программа продолжает свою работу с оператора следующего за оператором вызова данной функции.
Оператор return может отсутствовать:
· в функциях типа void;
· если возврат происходит перед закрывающейся фигурной скобкой;
· в функции main.
Функция может содержать несколько операторов return.
Указатели и динамические массивы
Идея работы с указателями состоит в том, что пользователь работает с адресом ячейки памяти и имеет возможность динамически создавать и уничтожать переменные.