【发布时间】:2018-03-26 17:39:20
【问题描述】:
是否可以将函数指针传递给函数并让该函数分配要使用的函数?
下面是我的意思的一个例子:
void sub(int *a, int *b, int *c)
{
*c = *a + *b;
}
void add(int *a, int *b, int *c)
{
*c = *a - *b;
}
void switch_function(void (*pointer)(int*, int*, int*), int i)
{
switch(i){
case 1:
pointer = &add;
break;
case 2:
pointer = ⊂
break;
}
}
int main()
{
int a;
int b;
int c;
void (*point)(int*, int*, int*);
switch_function(point, 1); // This should assign a value to `point`
a = 1;
b = 1;
c = 0;
(*point)(&a, &b, &c);
return 0;
}
感谢任何帮助。
【问题讨论】:
-
在这种特殊情况下,您应该返回一个函数指针。
-
它确实应该有一个默认情况,其中
pointer在错误输入时设置为 NULL。调用该指针时最好崩溃而不是冒险调用某些实际函数。
标签: c pointers function-pointers