如何理解下面C++表达式中的const和pointer?

how to understand const and pointer in C++ expression below?

我正在阅读在 IBM RSARTE C++ 版本中开发的应用程序代码。这是一段 C++ 代码:

const char * const * av = RTMain::argStrings();

当有两个const和两个*时,如何理解左侧语法?

阅读这份声明

const char * const * av 

从右到左。声明了指针 av ( * av ) 指向常量指针 ( * const ),后者又指向 const char.[=19= 类型的对象]

为简化此声明,请考虑此代码段。

const char *literal = "Hello World!";
const char * const * pointer_to_the pointer_literal = &literal;

所以使用指针pointer_to_the pointer_literal你可能不会写例如

*pointer_to_the pointer_literal = "Bye";

你可能不会写

**pointer_to_the pointer_literal = 'h';
const char * const * av = RTMain::argStrings();

相同
char const * const * av = RTMain::argStrings();

const 适用于 const.

的剩余部分

因此,av 是一个非 const 指针,指向 const*const char

  • 返回的指针 av 是非 const 并且可以更改。
  • 指针av指向的是const,无法更改。
  • 指针指向的charconst,无法更改。