&&指针或 &*(pointer_to_pointer) 在C++中的含义是什么

What's meaning of &&pointer or &*(pointer_to_pointer) in C++

本文关键字:pointer 是什么 C++ to 指针      更新时间:2023-10-16
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

你问 &*pp 是什么意思,这里 pp 是一个双指针,它包含指针 (*p( 的地址,通过写 &*pp 首先你正在取消引用 **pp 的值

*(pp( 将成为 pp 中的值,即指针 p 的地址通过编写 &(*pp( 现在您正在尝试获取取消引用值的地址,该值是(p 的地址(,最终将成为 p 的地址

简而言之,当您同时使用这两个运算符时,它们会相互抵消并为您提供指针中存在的值在这种情况下,&* 将被取消,您将获得 pp 的值,即 p 的地址我试图尽可能清楚地说明它....希望对:)有所帮助