指向非常量数据的指针可以隐式转换为指向相同类型的 const 数据的指针:
int *x = NULL;
int const *y = x;
添加额外的 const 限定符以匹配额外的间接在逻辑上应该以相同的方式工作:
int * *x = NULL;
int *const *y = x; /* okay */
int const *const *z = y; /* warning */
但是,使用带有-Wall
标志的 GCC 或 Clang 编译它会导致以下警告:
test.c:4:23: warning: initializing 'int const *const *' with an expression of type
'int *const *' discards qualifiers in nested pointer types
int const *const *z = y; /* warning */
^ ~
为什么添加额外的const
限定符“丢弃嵌套指针类型中的限定符”?