мета-данные страницы
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| c:c_ultimate_guide:functions [2025/10/22 19:01] – radi0dev | c:c_ultimate_guide:functions [2025/11/09 12:07] (текущий) – внешнее изменение A User Not Logged in | ||
|---|---|---|---|
| Строка 164: | Строка 164: | ||
| </ | </ | ||
| + | ===== Типы функций ===== | ||
| + | |||
| + | Используя определение функции - ее возвращаемый тип и типы параметров мы можем описать тип функций. Для этого применяется оператор typedef:\\ | ||
| + | '' | ||
| + | |||
| + | <code c> | ||
| + | #include < | ||
| + | | ||
| + | typedef void (message)(void); | ||
| + | |||
| + | void hello() { printf(" | ||
| + | void goodbye() { printf(" | ||
| + | |||
| + | int main(void) { | ||
| + | message* mes1 = &hello; // указатель указывает на функцию hello | ||
| + | message* mes2 = & | ||
| + | | ||
| + | mes1(); // Hello, World | ||
| + | mes2(); // Good Bye, World | ||
| + | | ||
| + | return 0; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== Тип функции-указатель ==== | ||
| + | |||
| + | Тип функции можно определить как указатель. Например: | ||
| + | '' | ||
| + | |||
| + | Но стоит понимать, | ||
| + | |||
| + | <code c> | ||
| + | #include < | ||
| + | | ||
| + | typedef int (*binary_op)(int, | ||
| + | |||
| + | int sum(int x, int y) { return x + y; } | ||
| + | |||
| + | int main(void) { | ||
| + | binary_op op1 = ∑ // op1 уже изначально представляет указатель | ||
| + | printf(" | ||
| + | | ||
| + | return 0; | ||
| + | } | ||
| + | </ | ||