【发布时间】:2011-01-14 07:44:39
【问题描述】:
将指向非常量的指针转换为指向常数的指针是合法的。
那么为什么将指向非const的指针转换为指向const的指针是不合法的呢?
例如,为什么下面的代码是非法的:
char *s1 = 0;
const char *s2 = s1; // OK...
char *a[MAX]; // aka char **
const char **ps = a; // error!
【问题讨论】:
-
我建议你将“a”定义为“char **”,你的例子会更清晰,没有不必要的数组。
-
是的,但是当 a 是 char** 时,他的问题也适用。
-
下面的解释其实还不错。
-
@MaxShawabkeh 它衰减到
char**,没有const。 -
看起来我回答的一个问题已与这个问题合并,请参阅my answer below,它现在是您问题的一部分。
标签: c++ pointers constants const-correctness