&&指针或 &*(pointer_to_pointer) 在C++中的含义是什么
What's meaning of &&pointer or &*(pointer_to_pointer) in C++
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 的地址我试图尽可能清楚地说明它....希望对:)有所帮助
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- C++避免重复声明的语法是什么
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- C++从另一个类访问公共静态向量的正确方法是什么
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- C++中名称篡改的目的是什么
- 在 c++ 中拥有一组结构的正确方法是什么?
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 是什么阻止DOMTimerCoordinator::NextID进入无休止的循环
- 派生类销毁的最佳实践是什么
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 通过JNI传递数据数组的最快方法是什么
- "using namespace std;"在C++的作用是什么?
- 这是什么意思:"member reference type 'Human *' is a pointer; did you mean to use '->'?"
- C++ 中数组的"expression must have pointer-to-object type"是什么?
- "pointer was not declared in this scope"是什么意思
- 这个错误是什么意思" expression must have pointer-to-class type"?
- "(void)pointer;" c++ 中是什么意思?
- C ++与"pointer = new type []"相比,"pointer = new type"是什么?