类型名(*指针变量名)(函数参数列表)
(1)如果要用指针调用函数,必须先使指针变量指向函数
eg:p=max
这就是把max函数的入口地址赋给了指针变量
(2)对指向函数的指针变量不能进行算术运算
(3)指向函数的指针变量的一个重要用途是把函数的入口地址作为函数参数传递到其他函数
接下来我们用程序来对其进行举例:
#include<stdio.h>
int main()
{
int max(int,int);
int min(int,int);
int add(int,int);
int fun(int,int,int(*p)(int,int));
int x,y,n;
printf("enter a and b:");
scanf("%d %d",&x,&y);
printf("please choose 1 or 2,3:");
scanf("%d",&n);
if(n==1)fun(x,y,max);
else if(n==2)fun(x,y,min);
else if(n==3)fun(x,y,add);
return 0;
}
int fun(int x,int y,int(*p)(int,int))
{
int result;
result=(*p)(x,y);
printf("result=%d\n",result);
return 0;
}
int max(int x,int y)
{
int c;
return c=x>y?x:y;
}
int min(int x,int y)
{
int c;
return c=x<y?x:y;
}
int add(int x,int y)
{
return (x+y);
}
先对max,min,add函数进行说明,然后通过用户输入数字来选择调用哪个函数,相当于制作了应该小菜单,在这个过程中,指向函数的指针作为形参,把函数的入口地址作为参数传递给其他函数
这样使用的好处是,只要在,每次调用的fun函数的时候给出不同的函数名作为实参即可,fun函数不必做任何修改。
那么,试运行: