|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Определение функцийОпределение функций. Как уже было отмечено, каждая программа на языке Си - это совокупность функций. В определении функции указываются последовательность действий, выполняемых при обращении к функции, имя функции, тип результата (возвращаемого значения) и совокупность формальных параметров, заменяемых при обращении к функции фактическими параметрами (аргументами). "Описание и определение функций - это та область, где стандартом ANSI в язык внесены самые существенные изменения" [2]. Так как многие компиляторы были написаны до ввода стандартов, а многие современные компиляторы позволяют использовать два варианта определения и описания функций, не будем ограничиваться только вариантом, рекомендуемым стандартом языка. Это целесообразно, так как "достандартный" (нестандартный) вариант часто встречается в опубликованных ранее текстах программ и нужно уметь их читать. Начнем в исторической последовательности с нестандартного определения функции, однако отметим еще раз, что стандарт допускает два варианта определения. Действия, выполняемые при обращении к функции, задает ее тело - составной оператор (блок), обязательным элементом которого служат внешние фигурные скобки { }. Имя функции, тип результата, совокупность параметров и их свойства задают заголовок функции. Структура классического (нестандартного) определения функции: тип результата имя_функции (список_формальных _параметров) спецификация _формалъных_параметров { определения_объектов исполняемые _операторы }
Здесь первые три строки - заголовок, последние четыре -тело функции. В этой главе будем рассматривать функции, возвращающие значения целого или вещественного типа. Таким образом, типом результата может быть char, int, long, float, double или long double. Могут быть добавлены signed и unsigned. Если тип результата не указан, то по умолчанию предполагается целый тип int. Допустимы функции, не возвращающие результата. В этом случае для них должен быть использован тип void. Имя неглавной функции - это произвольно выбираемый идентификатор. Имя функции не должно совпадать со служебными словами, именами библиотечных функций и с другими именами в программе. Список формальных параметров - набор идентификаторов, отделяемых друг от друга запятыми. Спецификация формальных параметров определяет их свойства и во многом подобна определениям и описаниям. В данной главе будем считать, что параметр может быть специфицирован либо как простая переменная целого или вещественного типа, либо как одномерный массив (целый или вещественный). Пример рассмотренного определения функции:
В настоящее время более широко используется и рекомендуется стандартом языка Си определение функции, в котором список формальных параметров объединен с их спецификацией. Структура стандартного определения функции: тип результата имя_функции (спецификация _формалъных_параметров) { определения_объектов; исполняемые_операторы; )
Пример той же функции:
Принципиально важным оператором тела функции является оператор возврата из функции в точку ее вызова: return выражение; или return;
Выражение в операторе возврата задает возвращаемое функцией значение. Для функции типа void, не возвращающей никакого значения, выражение в операторе return отсутствует. В теле такой функции оператор return может вообще отсутствовать. В этом случае компилятор предполагает, что оператор return находится в самом конце тела функции. Применение оператора return допустимо и в функции main(). Если программист явно не поместил в функцию main () оператор return, то компилятор поместит его в конце текста функции main (). В отличие от "неглавных" функций, откуда возврат выполняется в вызывающую функцию, выполнение оператора return; или return выражение; в функции main () приводит к завершению программы. Управление при таком выходе передается вызывающей программе, например операционной системе, которая может анализировать значение выражения, использованного в операторе возврата. Приведем примеры определения функций и проиллюстрируем некоторые их особенности. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |