第一种通过函数指针
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
double add(double, double);
double sub(double, double);
double mul(double, double);
double div(double, double);
//函数指针数组
double (*oper_func[])(double, double) = {
add,
sub,
mul,
div
};
//枚举
enum Oper{
ADD,
SUB,
MUL,
DIV
};
int main(int argc, char **argv) {
int result;
result = oper_func[ADD](1, 2);
}
第二种通过switch
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
double add(double, double);
double sub(double, double);
double mul(double, double);
double div(double, double);
double oper_func(double num1, double num2, enum Oper ope) {
switch (ope)
{
case ADD: return add(num1, num2);
case SUB: return sub(num1, num2);
case MUL: return mul(num1, num2);
case DIV: return div(num1, num2);
}
}
enum Oper{
ADD,
SUB,
MUL,
DIV
};
int main(int argc, char **argv) {
int result;
result = oper_func(1, 2, ADD);
}