第1个回答 2019-07-14
楼主已经开始想要知道如何用函数指针了,不错,好学生,给你个例子
#include
<stdio.h>
int
ff(int(*p)(int,int),int
a,int
b)//原始写法,阅读不便
{
return
p(a,b);
}
typedef
int(*Pfun)(int,int);//定义函数指针类型,同时申明了原型
返回int
两个int形参
int
f(Pfun
p,int
a,int
b)
//改进写法
易懂
{
return
p(a,b);
}
int
add(int
a,int
b)
{
printf("加法函数add被调用:");
return
a+b;
}
int
sub(int
a,int
b)
{
printf("减法函数sub被调用:");
return
a-b;
}
void
main()
{//函数指针初步应用
int
a=1,b=2;
printf("
%d+%d=%d\n",a,b,f(add,a,b));
printf("
%d-%d=%d\n",a,b,f(sub,a,b));
printf("
%d+%d=%d\n",a,b,ff(add,a,b));
printf("
%d-%d=%d\n",a,b,ff(sub,a,b));
}
///////////运行结果:
加法函数add被调用:
1+2=3
减法函数sub被调用:
1-2=-1
加法函数add被调用:
1+2=3
减法函数sub被调用:
1-2=-1
第2个回答 2019-07-17
给你看个程序代码吧,功能是输入a、b,然后分别输出a+b,a-b,找我代码改就行~
我编译器是gcc,你要是vc6,稍微改下就ok~
#include
<stdio.h>
typedef
int
(*FUNC)(int
a,
int
b);
int
add(int
x,
int
y)
{
return
x
+
y;
}
int
sub(int
x,
int
y)
{
return
x
-
y;
}
int
f(int
x,
int
y,
FUNC
op)
{
return
op(x,
y);
}
int
main()
{
int
a,
b;
scanf("%d%d",
&a,
&b);
printf("%d\n",
f(a,
b,
add));
printf("%d\n",
f(a,
b,
sub));
return
0;
}