c++ - 在 C++ 中保存指针的指针(Derefrence)
问题描述
我很困惑这是如何工作的:
int number = 10;
int* pointerOne = &number;
int* pointerTwo = pointerOne;
cout << *pointerTwo;
当我取消引用pointerTwo时,它应该打印pointerOnes内存地址。为什么编译器会打印出 number 的值?
解决方案
您正在尝试做的事情可以通过以下方式实现:
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);
推荐阅读
- c# - 使用 C# SDK 在 amazon s3 中获取存储桶使用的存储空间
- r - 在ggplot中绘制多条线性回归线
- python - 芹菜定期任务不定期
- amazon-web-services - 接收有关进入停止状态的任何特定 Windows 服务的警报
- php - 围绕会计 api 构建 webapp
- php - Laravel 记住我功能
- azure-resource-manager - 部署 ARM 模板时的错误
- c# - 是否有 WINAPI 或 P/Invoke 方法来剪辑/屏蔽 C# 中的窗口?
- csv - 如何使用谷歌云存储文件中的 gs:// 链接读取 csv 中的字符串内容
- r - 运行 ICC 分析