Указатель на функцию в качестве параметра функции - C (СИ)
Формулировка задачи:
Доброго времени суток.
Стоит задача - имеется функция, которая принимает 2 аргумента: 1 - указатель на функцию, 2 - параметр int
Если PARAM==0, то вызываем foo1, если нет, то foo2. Как это осуществить? Заранее спасибо
void testfoo(void (*)(void), int PARAM); void foo1(void) { printf("First func \n"); } void foo2(void) { printf("Second func \n"); }
Решение задачи: «Указатель на функцию в качестве параметра функции»
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; }
Объяснение кода листинга программы
- Подключаем стандартную библиотеку ввода-вывода
- Определяем две функции: function1 и function2, которые не принимают аргументов и не возвращают значение
- Создаем тип данных pfunction_t, который является указателем на функцию, принимающую void аргументов и возвращающую void
- Создаем массив pfunctions, который содержит два указателя на функции: function1 и function2
- Определяем функцию test_pfunctions, которая принимает два аргумента: массив функций и индекс функции в массиве
- Внутри функции test_pfunctions вызываем функцию, на которую указывает элемент массива functions с заданным индексом, передавая ей пустой набор аргументов
- В функции main создаем экземпляр массива pfunctions и вызываем функцию test_pfunctions с двумя аргументами: pfunctions и 0 (индекс 0 в массиве pfunctions соответствует функции function1)
- Повторяем предыдущий шаг для функции function2
- Завершаем программу с кодом 0, что означает успешное выполнение
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д