簡體   English   中英

C#中的AddressOf和C ++中的指針有什么區別

[英]What is the difference between AddressOf in c# and pointer in c++

我對C#中的AddressOf和C ++中的指針感到困惑? 我對Addressof是管理執行而指針是取消管理執行還是其他什么意思?

AddressOf是VB運算符,在C#中不存在。 它創建一個過程的委托。 以后可以使用委托在不包含過程名稱的代碼中調用過程。

C / C ++中的指針表示內存中的地址。 您可以創建一個指向函數的指針,並使用它來調用該函數,因此在特定情況下,指針和委托的行為類似。 但是,委托不只是函數指針。 最重要的區別在於,可以將代表鏈接起來,並一次調用多個過程。

MSDN的示例講述了大多數故事:

int number;
int* p = &number;
Console.WriteLine("Value pointed to by p: {0}", p->ToString());

這會將數字變量的地址分配給指向int的指針p。

有一些陷阱:1.必須初始化要獲取其地址的變量。 值類型(默認值)不是問題,但引用類型是問題。

  1. 在.NET中,變量可能會在內存中移動而不會引起您的注意。 如果您需要處理變量的地址,那么您確實想使用fixed將變量固定在RAM中。

  2. &只能應用於變量,不能應用於常量或值。 (換句話說,您不能使用類似int * p =&GetSomeInt();的結構。)

  3. 同樣,您的代碼必須以不安全的模式進行編譯,這將指示CLR您將使用托管代碼“安全網”之外的功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM