首页 > 解决方案 > 在 C++ 中保存指针的指针(Derefrence)

问题描述

我很困惑这是如何工作的:

int number = 10;
int* pointerOne = &number;
int* pointerTwo = pointerOne;

cout << *pointerTwo;

当我取消引用pointerTwo时,它应该打印pointerOnes内存地址。为什么编译器会打印出 number 的值?

标签: c++pointers

解决方案


您正在尝试做的事情可以通过以下方式实现:

int number = 10;
int* pointerOne = &number;
int** pointerTwo = &pointerOne;

cout << pointerTwo;

指针保存地址。当你这样做时,pointerTwo = pointerOne;你正在复制到pointerTwo价值pointerOne点。a 的地址int*具有类型int**。你从来没有碰过pointerOne's地址。您从未使用&来提取它。

如果您使用pointerOne,您将访问该地址。要访问它指向的位置,您必须取消引用:*pointerone.

因此,当您取消引用时:*pointerTwo它应该等于pointerOne,而不是&pointerOne

检查以下命令打印的内容:

cout << (*pointerTwo == pointerOne);
cout << '\n' << (pointerTwo == &pointerOne);

推荐阅读