5.8 我看到了用指针调用函数的不同语法形式。到底怎么回事?

最初, 一个函数指针必须用 * 操作符 (和一对额外的括弧) ``转换为" 一 个 ``真正的" 函数才能调用:
    int r, func(), (*fp)() = func;
    r = (*fp)();

而函数总是通过指针进行调用的, 所有 ``真正的" 函数名总是隐式的退化为 指针 (在表达式中, 正如在初始化时一样。参见问题 1.14)。这个 推论表明无论 fp 是函数名和函数的指针

    r = fp();

ANSI C 标准实际上接受后边的解释, 这意味着 * 操作符不再需要, 尽管依然允许。

参见问题 1.14

参考资料: [K&R1, Sec. 5.12 p. 116]; [K&R2, Sec. 5.11 p. 120]; [ISO, Sec. 6.3.2.2]; [Rationale, Sec. 3.3.2.2]; [H&S, Sec. 5.8 p. 147, Sec. 7.4.3 p. 190]。

翻译朱群英、孙云, LaTeX2HTML 编译 朱群英 (2005-06-23)