Внешнее определение функции

Определение функции имеет форму определение _ функции: спецификаторы _ описания описа - необ тель _ функции тело _ функции Единственными спецификаторами класса памяти, допускаемыми вкачестве спецификаторов-описания, являются extern или static; о различии между ними смотри в следующем разделе.Описатель функции подобен описателю для функции, возвращаю-щей..., за исключением того, что он перечисляет формальныепараметры определяемой функции. описатель _ функции: описатель (список _ параметров) необ список параметров: идентификатор идентификатор, список _ параметров Тело _ функции имеет форму тело _ функции: список _ описаний составной _ оператор Идентификаторы из списка параметров могут быть описаны всписке описаний. Любой идентификатор из этого списка, типкоторого не указан, считается имеющим тип int. Единственнымдопустимым здесь спецификатором класса памяти является register; если такой класс памяти специфицирован, то вначале выполнения функции соответствующий фактический пара-метр копируется, если это возможно, в регистр. Вот простой пример полного определения функции: -39- int max (a, b, c) int a, b, c; { int m; m = (a > b)? a: b; return ((m > c)? m: c); } Здесь int - спецификатор-типа, maх (a, b, c) -описатель_функции, int a, b, c; - список-описаний формальныхпараметров, {... } - блок, содержащий текст оператора. В языке Си все фактические параметры типа float преоб-разуются к типу double, так что описания формальных парамет-ров, объявленных как float, могут работать с параметрамитипа double. Аналогично, поскольку ссылка на массив в любомконтексте (в частности в фактическом параметре) рассматрива-ется как указатель на первый элемент массива, описания фор-мальных параметров вида массив... могут работать с факти-ческими параметрами типа указатель на... И наконец, пос-кольку функции не могут быть переданы функции, бессмысленноописывать формальный параметр как функцию (указатели натакие объекты, конечно, допускаются). ПРИМЕЧАНИЕ В некоторых версиях языка Си, в частности, в версиях для микропроцессоров, может быть запрещена передача структур и объединений через параметры функции.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: