通过C中的数组调用函数?

时间:2012-02-05 16:39:32

标签: c arrays function

我正在编写一个程序,其中包含一个运行另一个函数的函数:

int executePuzzle(int input) {
    switch (input) {
        case 1: puzzle1();break;
        case 2: puzzle2();break;
        default:break;
    }
}

然而,简单地使用以下内容可能更有效:

int puzzle[2] = {puzzle1(),puzzle2()};

然后调用puzzle0;我想知道如何做到这一点。

3 个答案:

答案 0 :(得分:9)

这听起来像是一个功能指针很有用的地方

typedef void (*puzzlePointer)();
puzzlePointer puzzles[] = { puzzle1, puzzle2, puzzle3 };

void executePuzzle(int input) {
  if (input >= 0 && input < 2) {
    puzzles[input]();
  }
}

答案 1 :(得分:0)

答案 2 :(得分:0)

如果switch语句的情况与executePuzzle函数中的连续一样,实际上编译器内部可能会使用函数指针(通过跳转表)来实现switch声明。