Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
С++ ЕНФ / мои отчёты / Отчёт по Лабе №2.doc
Скачиваний:
18
Добавлен:
25.05.2014
Размер:
96.26 Кб
Скачать

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является лишь рекомендацией компилятору сделать функцию встроенной. В конечном счете, компилятор сам принимает решение о том, нужно ли выполнять эту рекомендацию.

Соседние файлы в папке мои отчёты