2

C# 中指针和不安全世界的新手。我正在通过指针获取变量的内存地址,在这里和那里移动一些东西等等;基本上是学习。

static unsafe void M()
{
    var i = 1;
    var p = &i; //gets memory location of variable i here

    //how do I write to location p, say a value of 100?
}

我想知道是否也有办法写入特定位置?如果我可以同时阅读和写作,那么了解正在发生的事情会很有帮助。

没有实际目的,只是学习。还是用 C# 不可能?

4

3 回答 3

1

您需要使用*运算符取消引用指针。前任:

*p = 100;
于 2013-05-14T19:15:39.580 回答
1

像这样

*p = 100;

Console.WriteLine(i); // prints 100;
于 2013-05-14T19:16:10.657 回答
1

你需要尊重它。

这是一个 LINQPad 片段:

int i = 1;

unsafe
{
    var p = &i;

    *p = 100;
}

i.Dump();

正如预期的那样,这将输出“100”。

于 2013-05-14T19:16:18.407 回答