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)