Cool_Breeze
发表于 2020-4-16 16:03:19
本帖最后由 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;
}
}
XFCoding
发表于 2020-5-22 11:32:32
MARK,回头再看看视频
15186338930
发表于 2020-7-8 00:51:06
我要吃肉肉 发表于 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;
}
努力的小沈
发表于 2020-8-6 13:36:49
Jundong-4316 发表于 2019-3-5 20:51
函数指针作为参数
#include
你这样一讲我终于明白了。{:10_254:}{:10_254:}
guad268
发表于 2020-8-19 23:06:25
打卡
guad268
发表于 2020-8-20 22:41:12
打卡
木不怨落丶
发表于 2020-8-24 13:11:45
{:10_243:}
wxhlyt
发表于 2020-11-5 10:21:43
好好学习咯
shawshanke
发表于 2021-1-28 14:49:51
我裂开了{:10_266:}
1140913594
发表于 2021-3-29 15:14:49
讲得好!
陈霍成
发表于 2021-8-26 15:30:50
{:10_266:}{:10_266:}{:10_266:}{:10_266:}{:10_266:}{:10_266:}{:10_266:}{:10_266:}
HandsonYe
发表于 2022-3-11 14:52:07
{:10_243:}
Puppet16
发表于 2022-5-1 17:35:24
好好学习才能天天向上!
Puppet16
发表于 2022-5-2 13:58:32
好好学习才能天天向上!
豆嘉木
发表于 2022-5-12 12:35:15
划重点:函数的类型就是函数的返回值
lvdaye
发表于 2022-5-16 15:47:55
事实证明我是个普通人,以后就不要 自以为是了。
Devil丶Jay
发表于 2022-7-2 21:33:55
我的头快要裂开了!{:10_266:}
C入坑
发表于 2022-7-24 10:29:57
calc不写也能运行,为什么要多写这一步
小硕
发表于 2022-9-28 17:46:10
我要吃肉肉 发表于 2018-8-7 12:18
#include
int a,b,c;
你这个每次都把max,min,sum输出了一遍,process函数里面只写printf("%d\n",(*fun)(x,y));就行.
你这个process函数只是每次输出一个,你里面不能啥都有。
一个大西瓜嚯嚯
发表于 2023-3-6 17:29:05
{:10_269:}