|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Обращение к функции и ее прототипОбращение к функции и ее прототип. Как уже говорилось, для обращения к функции используется элементарное (первичное) выражение, называемое "вызов функции": имя_функцш (список_фактических_параметров)
Значение этого выражения - возвращаемое функцией значение (определяется в теле функции выполненным оператором return). Список фактических параметров (аргументов) – это список выражений, заменяющих формальные параметры функции. Соответствие между формальными и фактическими параметрами устанавливается по порядку их расположения в списках. Если формальных параметров у функции нет, то не должно быть и фактических параметров при обращении к этой функции. Фактические параметры (аргументы) передаются из вызывающей программы в функцию по значению, т.е. вычисляется значение каждого аргумента, и именно оно используется в теле функции вместо заменяемого формального параметра. Примеры вызовов определенных выше функций для вычисления объема цилиндра:
При работе с функциями тип возвращаемого функцией значения определяется только типом результата, указанным в определении функции перед ее именем. Как уже упоминалось, в языке Си ранее было принято, что если в определении функции тип результата опущен, то предполагается, что функция возвращает целочисленное значение. Это же соглашение справедливо и в вызывающей программе, где используется обращение к функции. Если возвращаемое функцией значение отлично от целочисленного, то эту функцию нужно обязательно специальным образом описать до обращения к ней. В версиях языка Си до его стандартизации описание функции имело вид: тип_результата имя_функции();
Такое описание не определяет функцию, не указывает количество и типы ее параметров, а только описывает тип возвращаемого значения. Например,
float volume();... ... z=volume(z-1.0,le-2);
Переменная z получит вещественное значение (объем цилиндра), вычисленное с помощью функции volume(). Если описание float volume(); опустить, то в вызывающей программе функция volume() воспринимается как целочисленная, т.е. результат будет неверен. Стандарт языка Си предусматривает обязательное описание функции со стандартным заголовком с помощью прототипа. Прототип в отличие от старомодного описания включает спецификацию параметров:
тип_результата имя_функции (спецификация_формалъных_параметров);
Здесь спецификация формальных параметров представляет собой список типов и, возможно, имен параметров функции. Прототип функции схож с ее заголовком. Но имеются два существенных отличия. Во-первых, прототип всегда заканчивается признаком конца оператора (символ ";") Во-вторых, в прототипе могут не указываться имена специфицируемых параметров. Прототип может не использоваться только в том случае, когда определение функции находится в том же файле, где размещена вызывающая ее программа, и это определение помещено выше вызывающей программы. Прототипы введенных выше функций могут быть такими:
float w(float, float); Scalar_Product (int n, float a[ ], float b[ ]);
Имена формальных параметров в прототипе функции w() обычно не указаны. Отметим, что применение прототипа предполагает только стандартную форму записи заголовка функции. Использование прототипа несовместимо со "старомодным" видом заголовка. Мы настоятельно рекомендуем стандартный вид заголовка и применение прототипов. И прототипы функций, и старомодные описания функций необходимо размещать наряду с определением объектов в теле функций до исполняемых операторов. Приведем примеры программ, состоящих более чем из одной функции. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |