![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Вызов функции
Для обращения к функции используется имя функции. Формат вызова: Имя_функции (список), где список представляет собой список фактических аргументов, передаваемых в функцию. Этот список может быть и пустым, но наличие круглых скобок обязательно. Фактический аргумент может быть величиной любого простого типа, структурой, объединением, перечислением или указателем на объект любого типа. Массив и функция не могут быть использованы в качестве фактических аргументов, но можно использовать указатели на эти объекты. Выполнение вызова функции происходит следующим образом. Вычисляются выражения в списке фактических аргументов. Затем, если известен прототип функции, тип полученного фактического параметра сравнивается с типом соответствующего формального параметра. Если они не совпадают, то либо производится преобразование типов, либо формируется сообщение об ошибке. Число выражений в списке фактических аргументов должно совпадать с числом формальных параметров, если только функция не имеет переменного числа параметров. В последнем случае проверке подлежат только обязательные параметры. Если в прототипе функции указано, что ей не требуются параметры, а при вызове они указаны, формируется сообщение об ошибке. Происходит присваивание значений или адресов фактических аргументов соответствующим формальным параметрам. Управление передается на первый оператор функции. Выполняются действия, указанные в теле функции. Выполнение оператора return в теле функции возвращает управление и вычисленное значение в вызывающую функцию. При отсутствии оператора return управление возвращается после выполнения последнего оператора тела функции, а возвращаемое значение не определено. Пример программы Найти корни уравнения x = sin2 x / 4 + 0, 27 методом итераций с точностью e. Расчетная формула x 1 = sin2 x 0 / 4 + 0, 27, где условие нахождения искомого корня | x 1 – x 0| < e – x 0 - начальное значение корня уравнения (обычно принимается равным нулю), x 1 - значение корня уравнения на следующей итерации, e - заданная точность вычисления корня (например, 0.001). В программе используется старый стиль определения функции: #include < stdio.h> #include < math.h> /*Подключение стандартных библиотек*/ #define EPS 0.001 /*Задание точности вычисления корня*/ float root(x, E) /*Заголовок функции с именем root*/ float x, E; /*Описание аргументов функции*/ { /*Тело функции*/ float x1; for (x1=pow(sin(x), 2)*.25+.27; fabs (x1− x)> E; x=x1, x1=pow(sin(x), 2)*.25+.27); return (x1); } /*Завершение описания функции root*/ int main() { float x0; printf (" \n Введите значение x0"); scanf (" %f", & x0); printf (" \n Корень уравнения %f", root(x0, EPS)); //Вызов функции root() return 0; }
|