Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Proga_shpory.docx
Скачиваний:
44
Добавлен:
25.03.2015
Размер:
102.57 Кб
Скачать

33) Функции пользователя. Способы передачи информации между функциями.

Функция – это логически самостоятельная именованная часть программы, которой можно передавать аргументы и которая может возвращать какое-то значение.

Способы передачи информации между функциями

  1. С помощью глобального описания переменных: обычно такое описание записывается после команд препроцессора или после описания прототипа функции. Глобальные переменные доступны всем функциям, в которых эти имена не переобъявлены.

  2. С помощью формальных и фактических аргументов. Если в качестве формальных аргументов, не используются указатели, то передачи информации идёт в одном направлении из вызывающей функции в вызываемую. Если формальные аргументы указатели или ссылки, то информация передаётся и в обратном направлении, при этом, в качестве фактических аргументов задают адреса переменных для формальных аргументов-указателей и просто переменные для ссылок.

  3. С помощью возврата значения в точку вызова.

  4. Смешанный

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

34) Функции пользователя. Механизм передачи аргументов в функцию. Передача аргументов функции: передача значений, передача адресов. Возврат результатов из функции.

Функция – это логически самостоятельная именованная часть программы, которой можно передавать аргументы и которая может возвращать какое-то значение.

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

При вызове функции в первую очередь вычисляются выражения, стоящие на месте аргументов; затем в стеке выделяется память под формальные параметры функции в соответствии с их типом, и каждому из них присваивается значение соответствующего аргумента. При этом проверяется соответствие типов и при необходимости выполняются их преобразования. При несоответствии типов выдается диагностическое сообщение.

Существует два способа передачи параметров в функцию: по значению и по адресу.

При передаче по значению в стек заносятся копии значений аргументов, и операторы функции работают с этими копиями. Доступа к исходным значениям параметров у функции нет, а, следовательно, нет и возможности их изменить.

При передаче по адресу в стек заносятся копии адресов аргументов, а функция осуществляет доступ к ячейкам памяти по этим адресам и может изменить исходные значения аргументов.

При передаче по ссылке в функцию передается адрес указанного при вызове параметра, а внутри функции все обращения к параметру неявно разыменовываются. Поэтому использование ссылок вместо указателей улучшает читаемость программы, избавляя от необходимости применять операции получения адреса и разыменования. Использование ссылок вместо передачи по значению более эффективно, поскольку не требует копирования параметров, что имеет значение при передаче структур данных большого объема.

Вызываемые функции могут передавать одно значение в точку вызова, либо через аргументы-указатели или ссылки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]