它是合法的指针到非const转换为指针到常量.
那么为什么将指向非const的指针转换为指向const的指针是不合法的呢?
例如,为什么以下代码是非法的:
char *s1 = 0;
const char *s2 = s1; // OK...
char *a[MAX]; // aka char **
const char **ps = a; // error!
Run Code Online (Sandbox Code Playgroud) 以下代码在GCC上编译时没有警告,但在Visual Studio 2005中发出警告.
const void * x = 0;
char * const * p = x;
Run Code Online (Sandbox Code Playgroud)
x指向未知类型的常量对象,p指向char的常量指针.为什么p的赋值会导致警告?
同样,这是C,而不是C++.谢谢.