指向另一个指针的指针(间接级别)?
Pointer to another pointer (levels of indirections)?
我有一个询问。这个话题很多人都知道,但我最近才遇到它,我可能有一些基本问题。
在 this site,我们可以阅读有关内存间接寻址的内容。
从该站点,我了解到一级无方向匹配引用类型,即引用类型的变量只有一个指针指向内存中分配对象的某个位置。这就是我对间接级别的理解。
提问:这个理解对吗?
如果没有,正确的理解是什么?什么是两级贬低?
如果是,第二层间接寻址是什么?它会指向另一个指针吗?是这样吗?
您有为二级间接寻址提供的示例。在 C# 中,签名如下:
DoWork(ref MyType x)
需要对引用类型的引用。这相当于(如您链接的文章中所述)
的非托管签名
DoWork(MyType** x);
所以一个指向指针的指针。
您的理解是正确的 - 引用类型至少提供了一个间接级别,因为它是指向对象的指针。 ref MyType x
是对引用类型的引用,因此它是指向对象指针的指针,因此是二级间接。
我有一个询问。这个话题很多人都知道,但我最近才遇到它,我可能有一些基本问题。
在 this site,我们可以阅读有关内存间接寻址的内容。
从该站点,我了解到一级无方向匹配引用类型,即引用类型的变量只有一个指针指向内存中分配对象的某个位置。这就是我对间接级别的理解。
提问:这个理解对吗?
如果没有,正确的理解是什么?什么是两级贬低?
如果是,第二层间接寻址是什么?它会指向另一个指针吗?是这样吗?
您有为二级间接寻址提供的示例。在 C# 中,签名如下:
DoWork(ref MyType x)
需要对引用类型的引用。这相当于(如您链接的文章中所述)
的非托管签名DoWork(MyType** x);
所以一个指向指针的指针。
您的理解是正确的 - 引用类型至少提供了一个间接级别,因为它是指向对象的指针。 ref MyType x
是对引用类型的引用,因此它是指向对象指针的指针,因此是二级间接。