使用refrence调用从函数指针复制函数地址

时间:2018-03-24 13:43:51

标签: c

我的目的是在运行时根据一些其他输入知道我应该调用哪个函数。为此我创建了函数指针。在这里,我编写了示例代码以便更好地理解。

#include <stdio.h>
typedef int (*ProcessFunPtr)(int a, int b);

int add (int a, int b)
{
    return (a+b);
}

int sub (int a, int b)
{
    return (a-b);
}

void check (int a, int b, ProcessFunPtr funptr)
{
    if (a<b)
    {
        funptr = &add; /*here i am expecting to copy same address in sendptr*/
        printf("%p\n", funptr);
        printf("%p\n", &add);
    }
    else
    {
        funptr = &sub;
          printf("%p\n", funptr);
        printf("%p\n", &sub);
    }
}

void calculate(int a , int b, ProcessFunPtr calptr)
{
    int c;

    c = calptr(a,b);
}
int main()
{
    ProcessFunPtr sendptr = NULL;
    int a,b;
    scanf ("%d", &a);
    scanf ("%d", &b);
    check(a,b,&sendptr); /*Here i am passing a address of function pointer*/
    if (ptr != NULL)
    {
        calculate(a,b,sendptr);
    }
    else
    {
        printf("\npointer is null");
    }
    return 0;
}

但是我看到sendptr总是为NULL。我需要做什么来复制add / sub到sendptr的函数地址。

0 个答案:

没有答案