Как можно использовать указатель на функцию с аргументом в c? - PullRequest
3 голосов
/ 29 мая 2020

Как вы можете использовать это объявление указателя на функцию?

int (* get_function(char c)) (int, int);

У меня есть три функции int function_a(int a, int b), int function_b(int a, int b) и int function_c(int a, int b). Я хочу использовать указанный выше указатель на функцию для условного вызова одной из моих функций на основе c.

1 Ответ

6 голосов
/ 29 мая 2020

Вот пример:

#include <stdio.h>

int function_a(int a, int b)
{
    printf("Inside function_a: %d %d\n", a, b);
    return a+b;
}

int function_b(int a, int b)
{
    printf("Inside function_b: %d %d\n", a, b);
    return a+b;
}

int function_c(int a, int b)
{
    printf("Inside function_c: %d %d\n", a, b);
    return a+b;
}

int function_whatever(int a, int b)
{
    printf("Inside function_whatever: %d %d\n", a, b);
    return a+b;
}


int (* get_function(char c)) (int, int)
{
    switch(c)
    {
        case 'A':
            return function_a;
        case 'B':
            return function_b;
        case 'C':
            return function_c;
    }
    return function_whatever;
}

int main(void) {
    get_function('B')(3, 5);
    return 0;
}

get_function('B') возвращает указатель функции на function_b и get_function('B')(3, 5); также вызывает эту функцию.

https://ideone.com/0kUp47

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...