如何读取指向C ++的指针?

时间:2014-08-28 14:32:53

标签: c++ pointers

你能告诉我读指针的最佳方法吗?我知道应该从右到左读取指针,并且const限定符应该在右边。我的问题是在读取指针指针时,例如:

int i = 10; 
int const *const p = &i; 
int const *const *p2 = &p; //how should I read this ? 

我应该阅读p2是否指向指向const的{​​{1}}指针?

如果我只指定它指向const指针,为什么p2会成为const指针?

4 个答案:

答案 0 :(得分:0)

" p2是指向常量int的常量指针的指针。"

" p是指向常量int的常量指针。"

注意"常量指针" vs."指向常量的指针。"前者是指针,不能指向其他任何东西;后者是一个指针,可以改为指向其他地方,但无论它指向什么,它都不能用来改变。

答案 1 :(得分:0)

是的,p2是指向const int的const指针的指针。指针本身不是const,但它指向的是。就是这样,因为这就是你宣布它的方式。

如果不清楚:指向const的指针意味着你不能通过该指针写入某些内容。

const指针意味着指针本身不能更改 - 您必须使用一个对象的地址初始化它,并且永远不能修改指针以引用任何其他对象。使用p2已经声明它,你可以通过不写指向的值来读取,但你可以修改指针本身,以便它可以引用其他对象。

答案 2 :(得分:0)

是的,基本上你可以将另一个值重新分配给p2:它是指向const const的{​​{1}}指针的指针。

答案 3 :(得分:0)

p2不是常量指针。如果您像这样指定它将变为常量:

int const *const *const p2 = &p;

现在,它是指向const int的const指针的const指针。

在原始声明中,它是指向const int的const指针的指针。