返回函数指针,其实就是返回一个函数。返回值为一个函数名就可以了。
#include<stdio.h>
int add(int num1, int num2)
{
return num1 + num2;
}
int subtract(int num1, int num2)
{
return num1 - num2;
}
typedef int(*fptrOperation)(int, int);
fptrOperation select(char opcode)//select函数根据输入的字符来判断返回add或者subtract
{
switch (opcode)
{
case '+':return add;
case '-':return subtract;
}
}
int evaluate(char opcode, int num1, int num2)
{
fptrOperation operation = select(opcode);
return operation(num1 , num2);
}
int main(void)
{
printf("%d\n", evaluate('+', 5, 6));
printf("%d\n", evaluate('-', 5, 6));
return 0;
}
运行结果如下: