C返回函数指针

返回函数指针需要把函数的返回类型声明为函数指针,为了说明如何实现这一点,我们会沿用传递函数指针中的addsub函数,以及类型定义。

我们用下面的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。

赞(3)

评论 抢沙发

评论前必须登录!

 

C指针