我正在阅读Accelerated C ++的附录A.在那里,作者展示了一个如下声明的例子:
const char * const * const * cp;
他们说const char是说明符,而* const * const * cp是声明符。我对额外const和* s的目的感到困惑。这是const char指向const char的声明吗?
答案 0 :(得分:7)
这是
的宣言const char
因此,您可以更改cp
,但不得更改任何
*cp
**cp
***cp
答案 1 :(得分:4)
我们可以从cdecl看到,cp
是pointer
到const pointer
到const pointer
到const char
。
你可以通过从右到左分解来看到这一点:
const char * const * const * cp;
cp is
a pointer
to const pointer
to const pointer
to const char
此外,标准(第8节)说:
指标表示类型,存储类别或其他属性 被宣布的实体声明者指定名称 这些实体和(可选)修改指标的类型 使用*(指向)和()(返回函数)等运算符。
答案 2 :(得分:1)
来自cdecl.org:
将cp声明为指向const指针的指针,指向const char
的const指针
答案 3 :(得分:1)
这与char * * * cp相同,除了所有指针都是const,除了一个。由于char *** cp是一个指向指针的指针,你的例子是相同的,但它是指向const指针的const指针的指针