Справочник языка Cи



         

Объявление функции (прототип) - часть 3


Примеры:

int add (int, int);                /* пример 1 */

double calc();                     /* пример 2 */

char *strfind (char *, …);         /* пример 3 */

void draw(void);                   /* пример 4 */

double (*sum (double, double))[3]; /* пример 5 */

int (*select(void))(int);          /* пример 6 */

char *p;                           /* пример 7 */

short *q;

int prt(void *);

fff(int);                          /* пример 8 */

В первом примере объявляется функция с именем add, которая принимает два аргумента типа int и возвращает значение типа int.

Во втором примере объявляется функция с именем calc,

которая возвращает значение типа double. Список типов аргументов пуст.

В третьем примере

объявляется функция с именем strfind, которая возвращает указатель на значение типа char. Функция требует по крайней мере один аргумент—указатель на значение типа char Список типов аргументов заканчивается запятой и многоточием. Это значит, что функция может принять и большее число аргументов.

В четвертом примере объявляется функция с типом возвращаемого значения void

(ничего не возвращающая). Список типов аргументов также содержит ключевое слово void,

означающее отсутствие аргументов функции.

В пятом примере sum объявляется как функция, возвращающая указатель на массив из трех значений типа double. Функция sum требует два аргумента, каждый из которых имеет тип double.

В шестом примере функция с именем select

объявлена как не имеющая аргументов и возвращающая указатель на функцию, требующую один аргумент типа int и возвращающую значение типа int.

В седьмом примере объявлена функция prt,

которая принимает в качестве аргумента указатель на любой тип и возвращает значение типа int. Любой из указателей р и q мог бы быть вполне корректно использован в качестве аргумента функции.

В восьмом примере объявлена функция fff, принимающая один аргумент типа int и возвращающая (по умолчанию) значение типа int. Очевидно, что эта функция объявлена на внешнем уровне, поскольку в ее объявлении отсутствует и спецификация класса памяти, и спецификация типа.




Содержание  Назад  Вперед