返回函数指针需要把函数的返回类型声明为函数指针,为了说明如何实现这一点,我们会沿用3.3.3节中的add
和sub
函数,以及类型定义。
我们用下面的select
函数基于输入的字符来返回一个指向对应操作的函数指针。取决于传入的操作码,它要么返回add
函数,要么返回sub
函数。
fptrOperation select(char opcode) {
switch(opcode) {
case '+': return add;
case '-': return subtract;
}
}
evaluate
函数把这些函数联系在一起,该函数接受两个整数和一个字符,字符代表要做的操作,它会把opcode
传递给select
函数,后者返回要执行的函数指针。在返回语句中,evaluate
函数执行刚才返回的函数并返回结果。
int evaluate(char opcode, int num1, int num2) {
fptrOperation operation = select(opcode);
return operation(num1, num2);
}
evaluate
函数及printf
语句的用法如下所示:
printf("%d\n",evaluate('+', 5, 6));
printf("%d\n",evaluate('-', 5, 6));
输出是11和-1。