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)