7.4 那麼為什麼作為函數形參的數組和指針申明可以互換呢 ?

這是一種便利。

由於數組會馬上蛻變為指針, 數組事實上從來沒有傳入過函數。允許指針參數聲明 為數組只不過是為讓它看起來好像傳入了數組, 因為該參數可能在函數內當作數組 使用。特別地, 任何聲明 ``看起來像" 數組的參數, 例如

    void f(char a[])
    { ... }
在編譯器裡都被當作指針來處理, 因為在傳入數組的時候,那正是函數接收到的.
    void f(char *a)
    { ... }

這種轉換僅限於函數形參的聲明, 別的地方並不適用。如果這種轉換令你困惑, 請避免它; 很多程序員得出結論, 讓形參聲明 ``看上去象" 調用或函數內的用法 所帶來的困惑遠遠大於它所提供的方便。

參見問題 6.18

參考資料: [K&R1, Sec. 5.3 p. 95, Sec. A10.1 p. 205]; [K&R2, Sec. 5.3 p. 100, Sec. A8.6.3 p. 218, Sec. A10.1 p. 226]; [ISO, Sec. 6.5.4.3, Sec. 6.7.1, Sec. 6.9.6]; [H&S, Sec. 9.3 p. 271]; [CT&P, Sec. 3.3 pp. 33-4]。

翻譯朱群英、孫雲, LaTeX2HTML 編譯 朱群英 (2005-06-23)