更新:我认为我的考试成绩很好;感谢大家的帮助并希望您度过愉快的一周(结束)!
我目前正在复习 C++ 考试的指南,并遇到了一个我仍然无法理解的示例。
考虑以下(部分)代码:
int x = 17;
int *ptr = &x;
cout<<*&ptr<<" "<<&ptr<<" "<<ptr<<" "<<*ptr<<endl;
Run Code Online (Sandbox Code Playgroud)
我理解 和&ptr是ptr相同的,即打印变量的地址x。我也明白*ptr打印出变量内部的值x,即17。
但是,我无法理解第一个,即*&ptr。它打印了一个地址,但我不知道它指向哪个。我尝试过研究它,但没有发现太多。组合代表什么*&?
ptr并且&ptr不一样。是(即,指向指针的指针)&ptr的地址。ptr
*是取消引用运算符 - 它返回指针指向的值。因此,如果您取消引用&ptr,您将要求“ 的地址所ptr指向的值”,或者ptr(当然,这又是 的地址x)。