本帖最后由 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;
}
}
|