如何在c中使用带有参数的函数指针?

问题描述 投票:0回答:2

如何使用此函数指针声明?

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有条件地调用我的一个函数。

c syntax function-pointers
2个回答
1
投票

这里是一个例子:

#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


0
投票

通常使用typedef声明的函数指针,然后我们使用新类型来声明新的函数类型或使用这些新类型或我们希望对其进行的处理。

例如如果我们想为函数定义一个新的函数指针类型,该函数返回一个整数并采用两个整数,则可以像下面这样进行操作:

typedef int(*f_ptr)(int a, int b)
© www.soinside.com 2019 - 2024. All rights reserved.