【发布时间】:2018-07-03 01:48:14
【问题描述】:
int *p;
int **pp;
int a = 9;
p = &a;
pp = &p;
cout << "&a: " << &a
cout << "&p: " << &p
cout << "&pp: " << &pp
cout << "pp : " << pp
cout << "*pp: " << *pp
cout << "&*pp: " << &*pp
&&p 和 &&pp 没有在 c++ 中定义,所以它们使用错误,但 &*pp 是什么意思? &*pp 是否等于 &&a?
程序启动时,结果如下:
&a: 00AEFAE4
&p: 00AEFAFC
&pp: 00AEFAF0
pp : 00AEFAFC
*pp: 00AEFAE4
&*pp: 00AEFAFC (=&p ???)
另一方面,为什么&*pp 等于&p?
【问题讨论】:
-
C++提供模板,可以避免直接使用指针
-
请发布您所询问的代码示例
-
上下文太少,无法回答。请展开。什么代码生成你的输出?
&*pp看起来您将pp取消引用到p,然后再次有效地获取地址是&p,但如果没有更多信息则无法确定。 -
代码很简单,我的问题是;为什么 &*pp 等于 &p?
-
为什么不呢,因为
*pp是p?
标签: c++ c++11 pointers visual-c++ c++14