Способы передачи данных из вызываемой функции
Переменные, имеющие локальную область видимости доступны только внутри того блока, в котором они определены (блоком обычно считается код, заключенный в фигурные скобки). Переменные, имеющие область видимости файла, доступны из любого места файла, в котором они определены
В С++ существует 3 класса памяти: l auto (автоматический) l static (статический) l динамический (будет рассмотрен позднее)
l Автоматическая переменная «рождается» в момент ее объявления и прекращает свое существование в момент завершения выполнения блока, где она определена. Автоматическая переменная не инициализируется автоматически. Если она инициализируется при объявлении, инициализация будет выполняться каждый раз при входе в блок и «рождении» переменной. l У переменных, имеющих класс памяти static, время жизни равно времени жизни всей программы. Статическая переменная по умолчанию инициализируется нулем. Статическая переменная создается и инициализируется один раз – при первом выполнении блока.
l Глобальные переменные объявляются вне всех блоков и классов (о последних речь пойдет позже) и имеют область видимости файла. Они доступны всем функциям и блокам, начиная с той точки файла программы, где они объявлены. l Глобальные переменные можно сделать доступными и из других файлов, если программа состоит из нескольких файлов. l По умолчанию глобальные переменные имеют статический класс памяти. l Глобальные переменные живут все время выполнения программы. Если они не инициализируются явно, по умолчанию, глобальные переменные инициализируются нулевым значением.
По возможности, использования глобальных переменных следует избегать
Синтаксис описания функций
Функция – изолированный именованный блок кода, имеющий определенное назначение
Информация в функцию передается с помощью аргументов (фактических параметров), задаваемых при ее вызове. Эти аргументы должны соответствовать формальным параметрам, указанным в описании функции.
Синтаксис описания функций
Тип_Возврата Имя_функции (список_параметров) // заголовок { операторы; // тело функции return выражение; }
l Область видимости параметров функции, объявленных в ее заголовке и переменных, объявленных в ее теле, ограничивается блоком тела функции.
l Эти переменные, если они не объявлены с атрибутом static уничтожаются после завершения выполнения функции, а хранимые ими значения безвозвратно теряются.
l Если функция не возвращает значения, в качестве типа возврата указывается void, а оператор return не содержит выражения, значение которого должно быть возвращено в вызываемую функцию.
Прототипы функций
l К моменту вызова функции компилятор должен иметь информацию о ней, чтобы скомпилировать правильно ее вызов.
l Если текст функции размещен в файле с исходным текстом после ее вызова или вообще размещен в другом файле, необходимо объявить функцию с помощью оператора, называемого прототипом функции.
l Все прототипы функций обычно помещаются в начале исходного файла программы. Заголовочные файлы, включаемые для использования стандартных библиотечных функций, помимо прочего включают в себя прототипы этих функций.
l Описание прототипа ничем не отличается от описания заголовка функции: Тип_Возврата Имя_функции (список_параметров);
l Описание прототипа, в отличие от заголовка, заканчивается точкой с запятой.
Способы передачи данных
Способы передачи данных в вызываемую функцию
· Путем передачи аргументов функции · С использованием глобальных переменных · Через файлы на внешних запоминающих устройствах
Способы передачи данных из вызываемой функции
· Через возвращаемое значение · Через формальные параметры, вызываемые по ссылке · Путем изменения значений глобальных переменных · Через файлы на внешних запоминающих устройствах · Кроме того, функция может выполнять какое-либо действие, не требующее передачи из нее данных в вызывающую функцию
В С++ используются два механизма передачи аргументов в функцию: по значению и по ссылке. Передача аргументов в функцию по значению
· При передаче по значению в функции создаются копии аргументов с именами формальных параметров.
· Значения аргументов копируются в созданные переменные.
· По завершении работы функции обратное копирование из формальных параметров в переменные - аргументы не производится.
· Если в теле функции значения формальных параметров были изменены, эти изменения по завершении работы функции будут потеряны и никак не отразятся на значениях фактических параметров.
· По умолчанию все аргументы, кроме массивов, передаются в функции по значению Передача аргументов в функцию по ссылке
· При передаче по ссылке в вызываемую функцию передаются ссылки на переменные – аргументы.
· Копии аргументов с именами формальных параметров не создаются.
· Вместо этого, по ссылке обеспечивается доступ к участкам памяти, занимаемым аргументами.
· Говоря другими словами, обработка аргументов ведется «на месте».
· Чтобы передать значения аргументов по ссылке, в качестве формальных параметров указывают переменные – ссылки.
· Все изменения формальных параметров, сделанные в функции, происходят с аргументами.
· Если в качестве аргумента по ссылке передается константа, то формальный параметр-ссылка должен быть объявлен с модификатором const.
Передача указателей
· Указатели обычно передаются по значению. Доступ к объектам, на которые они указывают при этом происходит «на месте».
· Применение указателя в качестве параметра позволяет функции получить аргумент, а не его копию. Передача массивов
Воспользуйтесь поиском по сайту: ![]() ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|