如何区分C++中的“指针常量”和“常量指针”

一共有六种,如下:
①const int p;
②const int* p;
③int const* p;
④int * const p;
⑤const int * const p;
⑥int const * const p;
第一种是常量整数,没什么好说的。
后面五种是指针,有一个简便的办法记忆。
从右往左读,遇到p就替换成“p is a ”遇到*就替换成“point to”。
比如说②,读作:p is a point to int const.
p是一个指向整型常量的指针。
③读作:p is a point to const int.
意思跟②相同。
④读作:p is a const point to int.
p是一个常量指针,指向整型。
⑤读作:p is a const point to int const.
⑥读作:p is a const point to const int.
⑤和⑥的意思相同,p都是常量指针,指向整型常量。
这种方法来源于《c primer plus》,这里也向c初学者推荐此书。

原文地址:https://www.zhihu.com/question/19829354

从右向左阅读,将所有的const换为常量,将所有的*换为指向于(笔者后加:可换为指针指向于pointer point to】)。

如:int * const p;可理解为:p is a const pointer point to int,即:p是一个被常量修饰的指针,指向与int类型的变量。

标签:

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

Captcha Code