如何理解下面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
,无法更改。
- 指针指向的
char
是const
,无法更改。
我正在阅读在 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
,无法更改。 - 指针指向的
char
是const
,无法更改。