可能重复:
what is the difference between const int*, const int * const, int const *
之间有什么区别
A const * pa2 = pa1;
和
A * const pa2 = pa1;
(例如我有一些A类)。
答案 0 :(得分:3)
从右到左阅读类型:
A const * pa2 = pa1;
pa2
是一个指向只读A的指针(该对象可能无法通过指针进行更改)
A * const pa2 = pa1;
pa2
是指向A的只读指针(指针可能不会更改)
这并不意味着A不能改变(或实际上是常数)const会产生误导,因此总是将其理解为只读。其他别名指针可能会修改A。
答案 1 :(得分:3)
A const * pa2
这是指向const A的非常量指针。您可以更改指针指向的位置,但不能更改指针指向的对象。
A * const pa2
这是一个指向非const A的const指针。你不能改变指针指向的位置,但你可以改变指针所指向的对象。
A const * const pa2
这是指向const A的const指针。您无法更改指针指向的位置,也无法更改指针指向的对象。
在尝试使用C和C ++解密声明时,您可能会发现"Clockwise/Spiral Rule"很有用。
答案 2 :(得分:0)
这意味着第一个是指向const对象的指针,(松散地)表示对象无法更改。
第二个是指向对象的const指针,这意味着指针本身不能被更改(即分配给不同的对象)。