- •Отчет по лабораторной работе №2
- •Содержание
- •Цель работы
- •1.Теоретическая часть
- •1.1.Основные понятия о функциях
- •1.1.1.Определение функций
- •1.1.2.Описание функции
- •1.1.3.Вызов функции
- •1.1.4.Передача параметров
- •1.2.Inline функция
- •1.3.Рекурсивные функции
- •2.Практическая часть
- •2.1.Описание программы 2lb1.Cpp
- •2.2.Описание программы 2lb2.Cpp
- •2.3.Описание программы laba1_3.Cpp
- •Заключение
- •Список литературы
- •Приложение а
1.1.2.Описание функции
Для корректного обращения к функции сведения о ней должны быть известны компилятору, т.е. до вызова функции в том же файле рекомендуется помещать ее описание - прототип:
<тип> <имя_функции>(<спецификация параметров>)
В отличие от заголовка функции в ее прототипе могут не указываться имена формальных параметров, например эквивалентны
double Func(int n, double x);
double Func(int, double);
1.1.3.Вызов функции
Вызов функции реализуется выражением с операцией "круглые скобки". При этом используется следующий синтаксис:
<обозначение_функции> (<список фактических параметров>)
Обычно в качестве <обозначение_функции> выступает ее имя. Кроме того, функцию можно обозначить, разыменовав указатель на нее. Это мы рассмотрим в дальнейшем.
<список фактических параметров>, называемых по аналогии с математикой аргументами - это список выражений, количество которых равно числу формальных параметров функции (исключение составляют функции с переменным количеством параметров). Соответствие между формальными и фактическими параметрами устанавливается по их взаимному расположению в списках.
Между формальными и фактическими параметрами должно быть соответствие по типам. Если типы не совпадают - включается механизм преобразования типов (если проведение такого преобразования допустимо).
Аналогично происходит при возврате функцией значения по оператору return.
1.1.4.Передача параметров
Синтаксис языка С предусматривает только один способ передачи параметров - передачу по значениям. Это означает, что формальные параметры функции локализованы в ней и не доступны вне ее определения, никакие операции над формальными параметрами в теле функции не изменяют значений фактических параметров.
Передача параметров по значению предусматривает следующие шаги:
1. При вызове функции выделяются участки памяти для ее формальных параметров. Если параметром является массив, то формируется указатель на начало этого массива и он служит представлением массива-параметра в теле функции.
2. Вычисляются значения выражений, использованных в качестве фактических параметров при вызове функции.
3. Вычисленные значения заносятся в участки памяти, выделенные для формальных параметров функции.
4. В теле функции выполняется обработка с использованием значений внутренних объектов-параметров, и результат передается в точку вызова функции как возвращаемое ей значение.
5. После выхода из функции освобождается память, выделенная для ее формальных параметров.
Область, в которой выделяется память для размещения формальных параметров функции, называется стеком.
Наряду с фрагментом, соответствующим формальным параметрам функции, в стек заносится и адрес точки возврата.
1.2.Inline функция
Встроенная функция-это функция, тело которой подставляется компилятором в код программы каждый раз при ее вызове. Такой способ формирует прямую последовательность машинных инструкций и заменяет традиционное обращение к функции на основе стека вызовов. Чтобы сделать функцию встроенной, необходимо предварить ее определение ключевым словом inline.Определяя функцию какInlineвы избегаете затрат, возникающих при её вызовах. С другой стороны происходит многократная подстановка тела встроенной функции в разные участки программы. По этой причине встроенными рекомендуется делать лишь очень небольшие функции. Поскольку определение встроенной функции должно присутствовать в каждой единице трансляции, где она используется, это определение, как правило, размещают в заголовочном файле. Ключевое словоinlineявляется лишь рекомендацией компилятору сделать функцию встроенной. В конечном счете, компилятор сам принимает решение о том, нужно ли выполнять эту рекомендацию.
