*& 关于 C++ 中的指针

Cly*_*ras 2 c++ pointers

更新:我认为我的考试成绩很好;感谢大家的帮助并希望您度过愉快的一周(结束)!

我目前正在复习 C++ 考试的指南,并遇到了一个我仍然无法理解的示例。

考虑以下(部分)代码:

int x = 17; 

int *ptr = &x; 

cout<<*&ptr<<" "<<&ptr<<" "<<ptr<<" "<<*ptr<<endl; 
Run Code Online (Sandbox Code Playgroud)

我理解 和&ptrptr相同的,即打印变量的地址x。我也明白*ptr打印出变量内部的值x,即17。

但是,我无法理解第一个,即*&ptr。它打印了一个地址,但我不知道它指向哪个。我尝试过研究它,但没有发现太多。组合代表什么*&

Mur*_*nik 6

ptr并且&ptr一样。是(即,指向指针的指针)&ptr的地址。ptr

*是取消引用运算符 - 它返回指针指向的值。因此,如果您取消引用&ptr,您将要求“ 的地址所ptr指向的值”,或者ptr(当然,这又是 的地址x)。

  • 这里的问题之一是您认为指针是特殊的东西。您了解了“int”变量的工作原理,在大多数情况下,指针变量的工作原理都是相同的。 (2认同)