АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Обращение к функции и ее прототип

Читайте также:
  1. B) обращение денег
  2. I. ДЕТСТВО. ПЕРВОЕ ИСКРЕННЕЕ ОБРАЩЕНИЕ
  3. I. Детство. Первое искреннее обращение
  4. II. Функции тахографа и требования к его конструкции
  5. MS Excel.Текстовые функции, примеры использования текстовых функций.
  6. SCADA-система: назначение и функции
  7. The salutation (Обращение)
  8. V2: Электронные таблицы. Встроенные функции.
  9. А) Обращение с врагами
  10. А) Рабочее место б) Функции
  11. Автоматическая настройка УОЗ на атмосферном двигателе с помощью функции замеров ускорения.
  12. Активный и пассивный словарь. Историзмы и архаизмы. Типы архаизмов. Стилистические функции.

Обращение к функции и ее прототип. Как уже говорилось, для обращения к функции используется элементарное (первичное) выражение, называемое "вызов функции":

имя_функцш (список_фактических_параметров)

 

Значение этого выражения - возвращаемое функцией значение (определяется в теле функции выполненным оператором 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() обычно не указаны.

Отметим, что применение прототипа предполагает только стандартную форму записи заголовка функции. Использование прототипа несовместимо со "старомодным" видом заголовка. Мы настоятельно рекомендуем стандартный вид заголовка и применение прототипов.

И прототипы функций, и старомодные описания функций необходимо размещать наряду с определением объектов в теле функций до исполняемых операторов.

Приведем примеры программ, состоящих более чем из одной функции.


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)