本帖最后由 Cool_Breeze 于 2020-4-16 16:31 编辑
#include <stdio.h>
int add(int ,int);
int sub(int ,int);
int (* p(char opt)\
/*
p(char opt) 表示函数p有一个参数是char类型,返回值是函数的指针int(*)(int,int)
*/
)(int,int);
int call(int (*mp)(int,int)\
/*
这个参数就是函数指针;
*/
, int a, int b);
int main(void)
{
int a=10,b=5;
int (*methodp)(int,int);//创建一个函数指针;
methodp=p('+');//p在前面已经声明了(p的返回类型就是函数指针);
printf("%d + %d = %d\n",a,b,call(methodp,a,b));
printf("%d - %d = %d\n",a,b,call(methodp=p('-'),a,b));
return 0;
}
int add(int a, int b)
{
return a+b;
}
int sub(int a, int b)
{
return a-b;
}
int call(int (*mp)(int,int),int a,int b)
{
return mp(a,b);
}
int (* p(char opt))(int,int)
{
switch (opt)
{
case '+' : return add;
case '-' : return sub;
}
}
MARK,回头再看看视频
我要吃肉肉 发表于 2018-8-7 12:18
#include
int a,b,c;
#include <stdio.h>
int a,b,c;
void main()
{
int max(int,int);
int min(int,int);
int sum(int,int);
void process(int x,int y,int(*fun)());
printf("plsase input a&b:");
scanf("%d,%d",&a,&b);
process(a,b,max);
}
void process(int x,int y,int(*fun)())
{
c=max(a,b);
printf("max=%d\n",c);
c=min(a,b);
printf("min=%d\n",c);
c=sum(a,b);
printf("sum=%d\n",c);
}
int max(int x,int y)
{
if(a>b)
{
return a;
}
else
{
return b;
}
}
int min(int x,int y)
{
if(a<b)
{
return a;
}
else
{
return b;
}
}
int sum(int x,int y)
{
int add;
add=a+b;
return add;
}
Jundong-4316 发表于 2019-3-5 20:51
函数指针作为参数
#include
你这样一讲我终于明白了。{:10_254:}{:10_254:}
打卡
打卡
{:10_243:}
好好学习咯
我裂开了{:10_266:}
讲得好!
{:10_266:}{:10_266:}{:10_266:}{:10_266:}{:10_266:}{:10_266:}{:10_266:}{:10_266:}
{:10_243:}
好好学习才能天天向上!
好好学习才能天天向上!
划重点:函数的类型就是函数的返回值
事实证明我是个普通人,以后就不要 自以为是了。
我的头快要裂开了!{:10_266:}
calc不写也能运行,为什么要多写这一步
我要吃肉肉 发表于 2018-8-7 12:18
#include
int a,b,c;
你这个每次都把max,min,sum输出了一遍,process函数里面只写printf("%d\n",(*fun)(x,y));就行.
你这个process函数只是每次输出一个,你里面不能啥都有。
{:10_269:}