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