你能告诉我读指针的最佳方法吗?我知道应该从右到左读取指针,并且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
指针?
答案 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指针的指针。