Можно ли передать функцию как аргумент другой функции? - C (СИ)
Формулировка задачи:
mojno li v iazike C peredati functiiu kak argument drugoi functii.
sori za angl. bukvi.
mersi.
Решение задачи: «Можно ли передать функцию как аргумент другой функции?»
textual
Листинг программы
#include <stdio.h>
int sum(int a, int b) {
return a+b;
}
int mul(int a, int b) {
return a*b;
}
void func(int (*f)(int, int), int a, int b) {
printf("%d\n", f(a, b));
}
int main(void) {
func(sum, 1, 2);
func(mul, 1, 2);
return 0;
}
Объяснение кода листинга программы
В этом коде объявлены три функции: sum, mul и func.
- Функция sum принимает два целых числа в качестве аргументов и возвращает их сумму.
- Функция mul также принимает два целых числа в качестве аргументов, но возвращает их произведение.
- Функция func не возвращает ничего. Она принимает три аргумента: функцию (представленную в виде указателя на функцию), и два целых числа. Внутри функции происходит вызов переданной функции с двумя аргументами, а затем результат выводится на экран. В функции main вызывается функция func дважды. В первом вызове передается функция sum и два аргумента 1 и 2. Во втором вызове передается функция mul и те же два аргумента.