Указатель на функцию в качестве параметра функции - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. Стоит задача - имеется функция, которая принимает 2 аргумента: 1 - указатель на функцию, 2 - параметр int
void testfoo(void (*)(void), int PARAM);
 
void foo1(void)
{
printf("First func \n");
}
 
void foo2(void)
{
printf("Second func \n");
}
Если PARAM==0, то вызываем foo1, если нет, то foo2. Как это осуществить? Заранее спасибо

Решение задачи: «Указатель на функцию в качестве параметра функции»

textual
Листинг программы
#include <stdio.h>
 
void function1(void)
{
    puts("First function");
}
 
void function2(void)
{
    puts("Second function");
}
 
typedef void (*pfunction_t)(void);
 
pfunction_t pfunctions[2] = { &function1, &function2 };
 
void test_pfunctions(pfunction_t functions[], int function_index)
{
    (*functions[function_index])();
}
 
int main(void)
{
    test_pfunctions(pfunctions, 0);
    test_pfunctions(pfunctions, 1);
 
    return 0;
}

Объяснение кода листинга программы

  1. Подключаем стандартную библиотеку ввода-вывода
  2. Определяем две функции: function1 и function2, которые не принимают аргументов и не возвращают значение
  3. Создаем тип данных pfunction_t, который является указателем на функцию, принимающую void аргументов и возвращающую void
  4. Создаем массив pfunctions, который содержит два указателя на функции: function1 и function2
  5. Определяем функцию test_pfunctions, которая принимает два аргумента: массив функций и индекс функции в массиве
  6. Внутри функции test_pfunctions вызываем функцию, на которую указывает элемент массива functions с заданным индексом, передавая ей пустой набор аргументов
  7. В функции main создаем экземпляр массива pfunctions и вызываем функцию test_pfunctions с двумя аргументами: pfunctions и 0 (индекс 0 в массиве pfunctions соответствует функции function1)
  8. Повторяем предыдущий шаг для функции function2
  9. Завершаем программу с кодом 0, что означает успешное выполнение

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.222 из 5
Похожие ответы