Вызов функции. Определение, объявление

Страницы работы

Содержание работы

Функция – обособленная и именованная совокупность объявлений и операторов языка, предназначенная для выполнения некоторой задачи. Функция является основной функциональной единицей программы на языке Си. В программе есть по крайней мере 1 функция main. Функция имеет 2 формальных представления:

Определение:

[<спецификация класса памяти>] [<тип возврата>] <описатель> (<список форм. параметров>) <тело функции>

-  спецификация класса памяти – определяем время жизни и видимость объекта. Поскольку функция – глобально живущий объект в ОП и под нее там распределяется спец. сегмент (сегмент кода), к функциям применимы спецификаторы класса памяти, исп. для глобально живущих переменных: static, extern

-  тип возврата – любая функция может сформировать некоторой выражение в операторе return, вычислить его и передать в точку вызова. Результат – это значение, которым можно оперировать как единым целым. Результат приводится к типу, который объявлен как тип возврата функции. Если функция не должна возвращать значение, то ее тип возврата void и после return ничего нет

-  описатель – ид., именующий точку входа функции и позволяющий осуществить прямую или косвенную передачу управления на эту току

-  формальные параметры – временные переменные, которые принимают значение, задаваемые при вызове функции в порядке их следования в списке. Список представляет собой разделенные запятыми конструкции вида <спецификация типа> <ид> (auto, register).

-  тело функции – составной оператор поэтому воспринимается как единственный оператор, однако сам по себе содержит совокупность объявлений и операторов. 

Объявление:

[<спецификация класса памяти>] <тип возврата> <описатель> (<список факт. параметров>)

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

Вызов функции

<выражение> (<список выражений>)

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

Похожие материалы

Информация о работе