interior_ptr (C++/CLI)

内部指针 声明为指向于引用类型,但是,不为对象。 内部指针可以指向句柄引用,值类型,装箱的类型处理,托管类型的成员,或者到托管数组的元素。

所有运行时

(不适用于所有运行时间。) 此语言功能的备注

运行时的窗口

(不适用于运行时仅的窗口。) 此语言功能的备注

y0fh545k.collapse_all(zh-cn,VS.110).gif要求

编译器选项: /ZW

公共语言运行时

以下语法示例演示内部指针。

y0fh545k.collapse_all(zh-cn,VS.110).gif语法

cli::interior_ptr<cv_qualifier type> var = &initializer;

y0fh545k.collapse_all(zh-cn,VS.110).gif参数

  • cv_qualifier
    const 或 volatile 限定符。

  • type
    初始值设定项的类型。

  • var
    interior_ptr 变量的名称。

  • 初始值设定项
    可以分配给本机指针的引用类型、组件的托管数组,或其他对象的成员。

y0fh545k.collapse_all(zh-cn,VS.110).gif备注

本机指针无法跟踪项目,因为其位置在托管堆更改,由对象的垃圾回收器移动实例。 为了正确引用的指针可实例,运行时需要更新指针到最近确定的对象。

interior_ptr 表示本机指针的函数的超集。 因此,可分配到本机指针的任何可能也被分配到 interior_ptr。 内部指针允许执行相同的设置操作与本机指针,包括比较和指针算法。

内部指针在堆栈上只能声明。 内部指针不能声明为类的成员。

由于是内部指针在堆栈仅存在,采用的内部指针地址为非托管指针。

interior_ptr 对 bool的隐式转换,使其在条件语句的使用。

有关如何声明指向对象在垃圾回收堆无法移动的内部指针的信息,请参见 pin_ptr

interior_ptr 在 CLI 命名空间。 有关更多信息,请参见Platform、default 和 cli 命名空间(C++ 组件扩展)

有关内部指针的更多信息,请参见

y0fh545k.collapse_all(zh-cn,VS.110).gif要求

编译器选项: /clr

y0fh545k.collapse_all(zh-cn,VS.110).gif示例

示例

下面的示例演示如何声明和使用内部指针到引用类型。

// interior_ptr.cpp
// compile with: /clr
using namespace System;

ref class MyClass {
public:
   int data;
};

int main() {
   MyClass ^ h_MyClass = gcnew MyClass;
   h_MyClass->data = 1;
   Console::WriteLine(h_MyClass->data);

   interior_ptr<int> p = &(h_MyClass->data);
   *p = 2;
   Console::WriteLine(h_MyClass->data);

   // alternatively
   interior_ptr<MyClass ^> p2 = &h_MyClass;
   (*p2)->data = 3;
   Console::WriteLine((*p2)->data);
}

Output

  
  
  

请参见

概念

适用于运行时平台的组件扩展