C/C++函数指针数组

下面贴出一个函数指针数组C语言示例:

#include <stdio.h>

void print1(double B, double L) {
    printf("%lf\n", (B + L));
}

void print2(double B, double L) {
    printf("%lf\n", (B - L));
}

void print3(double B, double L) {
    printf("%lf\n", (B * L));
}

void print4(double B, double L) {
    printf("%lf\n", (B / L));
}

const void (*Print[])(double, double) = {&print1, &print2, &print3, &print4};//函数指针数组

int main() {
    double B = 32, L = 64;
    for (int i = 0; i < 4; i++) {
        //Print[i](B, L);
        //Print[i] <==> *(Print+i) <==> *(i+Print) <==> i[Print]
        i[Print](B, L);//与Print[i](B, L)调用等价,都是正确的调用形式
    }
    return 0;
}

运行结果:

96.000000
-32.000000
2048.000000
0.500000

部分情况下可以用函数指针数组替换switch语句,直接寻址还是比switch多次bool运算快很多的。应该还有其他的应用场景。

发表评论

电子邮件地址不会被公开。 必填项已用*标注