#include<stdio.h>
int f(int a,int b)
{
int c;
c=a+b;
return c;
}
int g(int a,int b)
{
int c;
c=a*b;
return c;
}
int h(int a,int b)
{
int c;
c=a-b;
return c;
}
int main()
{
int x,y,z,j,k;
scanf("%d%d",&x,&y);
int(*p1)(int a,int b);
int(*p2)(int a,int b);
int(*p3)(int a,int b);
p1=f;//指针函数p1指向函数f
p2=g;//指针函数p2指向函数g
p3=h;//指针函数p3指向函数h
z=p1(x,y);//相当于f在运算
j=p2(x,y);//同上
k=p3(x,y);
printf("和是:%d\n积是:%d\n差是:%d",z,j,k);
return 0;
}
当指针函数作为形参时,会发现只需定义一个指针变量即可
#include<stdio.h>
int f(int a,int b)
{
int c;
c=a+b;
return c;
}
int g(int a,int b)
{
int c;
c=a*b;
return c;
}
int h(int a,int b)
{
int c;
c=a-b;
return c;
}
void a(int x,int y,int (*fun)(int ,int ))//函数指针作为形参
{
int result;
result=(*fun)(x,y);//指针函数所指的函数f在此运算,fun就是一个作为形参的指针函数,作为形参,它是变量,它可以接受多个实参,做为指针,它可以去指向某个函数的地址
printf("%d\n",result);
}
int main()
{
int x,y;
scanf("%d%d",&x,&y);
printf("和=");
a(x,y,f);//函数名f作为实参,传递给指针函数fun,使fun指向函数f
printf("差=");
a(x,y,g);
printf("积=");
a(x,y,h);
return 0;
}