12.10 為什麼我不能向接受 const char ** 的函數傳入 char **?

你可以向接受 const-T 的指針的地方傳入 T 的指針 (任何類型 T 都適用)。 但是, 這個允許在帶修飾的指針類型上輕微不匹配的規則 (明顯的例外) 卻不 能遞歸應用, 而只能用於最上層。

如果你必須賦值或傳遞除了在最上層還有修飾符不匹配的指針, 你必須明確 使用類型轉換 (本例中, 使用 (const char **)), 不過, 通常需要使用這樣 的轉換意味著還有轉換所不能修復的深層次問題。

參考資料: [ISO, Sec. 6.1.2.6, Sec. 6.3.16.1, Sec. 6.5.3]; [H&S, Sec. 7.9.1 pp. 221-2]。

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