C语言中有指向函数的指针,比如
int max(int ,int );
int (*da)(int ,int );
da=max;
int d=da(a,b);
----------------------
int max(int a,int b){
return (a>b)?a:b;
}
man函数的声明和定义很简单,需要注意的是函数指针da的申明和初始化:
声明:int (*da)(int ,int );从这里我们可以看出来,指向函数的指针在声明的时候,格式为(*指针名)这里的()是不可缺的。同时还要指出函数的参数列表。指针初始化的时候很简单:da=max;函数指针在使用的时候就把指针名作为函数名使用就可以了。我们可以思考一下为什么在声明函数指针的时候需要指出参数列表。
那么进入正题,如何将指向函数的指针作为函数的参数,不多说,直接上例子代码:
#include<stdio.h>
int main(){
int max(int ,int );
int min(int ,int );
int compare(int (*f)(int ,int ),int ,int );
int a=1,b=5;
int (*da)(int ,int );
int (*xiao)(int ,int );
da=max;
xiao=min;
int c=compare(da,a,b);//或者compare(max,a,b);
int d=da(a,b);
printf("%d\n%d\n",c,d);
}
int max(int a,int b){
return (a>b)?a:b;
}
int min(int a,int b){
return (a<b)?a:b;
}
int compare(int (*f)(int ,int ),int a,int b){
return (*f)(a,b);
}