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 に答える