interior_ptr (C++/CLI)
內部指標宣告變數的指標,在參考型別,而不是物件本身。內部指標可以指向參考的控制代碼、 實值型別、 boxed 型別控制代碼、 的 managed 型別,成員或 managed 陣列的元素。
所有的執行階段
(還有沒有此語言功能的註解適用於所有的執行階段)。
Windows 執行階段
(還有沒有此語言功能的註解適用於 Windows 執行階段)。
需求
編譯器選項:/ZW
Common Language Runtime
在下列語法,示範了內部指標。
語法
cli::interior_ptr<cv_qualifier type> var = &initializer;
參數
cv_qualifier
const 或volatile的限定詞。type
哪種初始設定式。var
值為interior_ptr變數。初始設定式
成員的參考型別、 managed 的陣列或任何其他物件,您可以為原生指標指定的項目。
備註
原生指標不能在 managed 堆積,這樣會使記憶體回收行程移動物件的執行個體,其位置變更為追蹤項目。為了正確地參考執行個體的指標,執行階段需要更新到新位置的物件的指標。
interior_ptr代表的原生指標的功能超集。因此,任何項目可以指派給原生指標也可以指派給interior_ptr。內部指標便會允許執行相同的作業集合稱為原生指標,包括比較和指標算術。
只能在堆疊上宣告的內部指標。內部指標不可以宣告為類別的成員。
因為內部指標的存在只是在堆疊上,內部指標的位址,會產生未受管理的指標。
interior_ptr具有隱含轉換成bool,讓它在條件陳述式的使用。
如需如何宣告內部指標所指到物件無法移動到記憶體回收堆積上的資訊,請參閱 pin_ptr。
interior_ptr處於 cli 命名空間。如需詳細資訊,請參閱 Platform、default 和 cli 命名空間 (C++ 元件擴充功能)。
如需有關內部指標的詳細資訊,請參閱
需求
編譯器選項:/clr
範例
範例
下列範例會示範如何宣告和為參考型別的使用內部指標。
// 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