мета-данные страницы
  •  

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

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