Определение функции включает те же поля, что и прототип функции + тело функции – код, выполняющийся при вызове функции (заключён в {}).
double summa (double a, double b)
{
double c;
c=a+b;
return c;
}
Вызов функции: для обеспечения эффективного и безопасного вызова функций требуется обеспечить:
1) связь по управлению;
a) вызов и возврат;
b) сохранение и восстановление контекста вызывающей части;
2) функция должна производить одни и те же действия с разными наборами данных.
| вызывающая часть | стек | функция |
| a=5; b=8; | 1) Сохранение контекста | |
| sum(a;b) | вызова. | |
| 1) Формирование |
| 2) Создание текущего |
параметров в стеке.
| 5
| контекста. |
| 2) Сохранение адреса | 3) Тело функции. | |
| возврата и передача | 4) Формирование | |
| управления (вызова). | return sum func | |
| 3) Восстановление | 5) Восстановление контекста | |
| стека. | вызова. | |
| 4) Получение результата. | 6) Возврат. |
параметров в стеке.






