解引用多级指针
Dereferencing multi-level pointers
这可能是其他一些问题/答案的重复(我找不到),但对我来说,似乎有很好的解释为什么和何时使用多指针,但是关于指向指针的指针如何解引用的简单解释缺失。
我试图做一个简单(和模糊)的解释,这应该只给读者最基本的知识如何解引用指针指向指向......
不需要这样的解释。正如您所知道的,*
对指针解引用,这是一个简单的归纳,如果指向的变量也是一个指针,则只需对解引用两次就可以得到这个值。等等。
不要忘记一个简单的经验法则:如果你曾经需要超过两倍的间接性(例如,发现自己在写***
或更糟),很可能你的设计是有缺陷的,你应该退后一步,重新设计你的问题的解决方案,然后再次实现
假设您有以下代码:
int *p;
int **p2;
int k;
我们可以初始化k
并使p
指向它。之后,我们可以让p2
指向指针 p
:
k = 10;
p = &i;
p2 = &p;
现在我们将对p2
解引用两次,看看p2
指向的指针指向的值是什么(使用简单的c++):
#include <iostream>
...
std::cout << "What is k? Answer: " << **p2;
-> k是多少?答:10
也可以通过解引用来改变k
的值
**p2 = 19;
std::cout << "What is k now? Answer: " << **p2;
->现在k是多少?答:19
我希望这能帮助新程序员了解指针对指针的解引用。如果需要三重(或更多)指针,只需解引用更多级别
int ***p3 = &p2;
***p3 = 60;
std::cout << "What is k now? Answer: " << ***p3;
->现在k是多少?答:60
关于解引用真正含义的更多信息可以在
中找到指针的"解引用"是什么意思?
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 何时在引用或唯一指针上使用移动语义
- QMetaObject invokeMethod的基于函数指针的语法
- 如何从 std::atomic 中提取指针 T<T>?
- 如何在 C# 中映射双 C 结构指针?
- 读取进程内存多级指针(DLL 注入)
- 如何包装多级原始指针以赋予其容器语义
- 作为参数 c++ 的多级指针
- 解引用多级指针
- 引用多级指针的更好方法
- 在具有多级指针和偏移的C++中使用WriteProcessMemory()
- C++、作弊引擎/OllyDBG从多级指针中查找基础"static"地址