我想问一下为什么以及何时需要使用函数指针?我做了一些搜索,我得到的答案是,这样我们可以在不同的时间使用不同的函数,但我们仍然可以通过直接调用函数来做到这一点吗?
谢谢。
答案 0 :(得分:5)
函数指针提供了一种有限的多态性,您可以在不知道具体函数的情况下调用函数。
我认为在C中没有其他办法可以做到这一点。
在C ++中,通过使用具有虚拟成员函数的对象可以实现大致相同的效果,所述对象通过基类引用或指针访问。然后直接使用对象指针的目的与C函数指针的用途大致相同。
但是当某些软件(例如C库,)需要函数指针时,你不能这样做。
通常函数指针更方便。
答案 1 :(得分:1)
示例:
int add(int a,int b){
return a+b;
}
int multiply(int a,int b){
return a*b;
}
int calculate(int a, int (*fptr)(int,int),int b){
return fptr(a,b);
}
int main(){
int a=3,b=5;
char ch;
switch(ch=getch()){
case 'a':
cout<<calculate(a,add,b);
break;
case 'b':
cout<<calculate(a,multiply,b);
break;
}
}