我对 c# 中的 AddressOf 和 c++ 中的指针感到困惑?我对 Addressof 是管理执行而指针是非管理执行还是其他什么是正确的?
问问题
261 次
2 回答
2
AddressOf 是一个 VB 运算符,在 C# 中不存在。它创建一个过程的委托。以后可以使用委托在不包含过程名称的代码中调用过程。
C/C++ 中的指针是内存中地址的表示。您可以创建一个指向函数的指针并使用它来调用该函数,因此在这种特殊情况下,指针和委托的行为相似。但是,委托不仅仅是函数指针。最重要的区别是委托可以被链接起来,并一次调用多个过程。
于 2009-12-15T06:19:05.960 回答
1
来自 MSDN 的示例讲述了大部分故事:
int number;
int* p = &number;
Console.WriteLine("Value pointed to by p: {0}", p->ToString());
这会将 number 变量的地址分配给指向 int 的指针 p。
这有一些问题: 1. 您要获取其地址的变量必须被初始化。对于默认值类型不是问题,但对于引用类型是问题。
在 .NET 中,变量可以在您不知道的情况下在内存中移动。如果你需要处理一个变量的地址,你真的想用fixed将变量固定在RAM中。
& 只能应用于变量,不能应用于常量或值。(换句话说,你不能使用像 int* p = &GetSomeInt(); 这样的结构)
同样,您的代码必须在不安全模式下编译,这会标记 CLR,您将使用托管代码“安全网”之外的功能。
于 2009-12-15T06:16:17.417 回答