C#にポインターアドレスを表示するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/2057469

  •  20-09-2019
  •  | 
  •  

質問

私はC#でプログラミングして以来、ポインターをしていませんでした - そして、私のC ++日はずっと前でした。私は自分の知識をリフレッシュするべきだと思って、ここで別の質問のために彼らと遊んでいただけです。私はそれらすべてを大丈夫に理解していますが、コンソールにポインターのアドレスを書く方法を理解できません...

char c = 'c';
char d = 'd';
char e = 'e';

unsafe
{
    char* cp = &d;
    //How do I write the pointer address to the console?
    *cp = 'f';
    cp = &e;
    //How do I write the pointer address to the console?
    *cp = 'g';
    cp = &c;
    //How do I write the pointer address to the console?
    *cp = 'h';        
}
Console.WriteLine("c:{0}", c); //should display "c:h";
Console.WriteLine("d:{0}", d); //should display "d:f";
Console.WriteLine("e:{0}", e); //should display "e:g";

使用 Console.WriteLine(*cp); ポインターアドレスで現在の値を与えてください...実際のアドレスを表示したい場合はどうなりますか?

役に立ちましたか?

解決

Console.WriteLine(new IntPtr(cp));

他のヒント

マネージドコードでは、ガベージコレクターが自由に物事を動かすことができることを忘れないでください。確実にしてください ピン アドレスが重要な状況にある場合は、オブジェクトをダウンします。

char* cptr;
char achr = 'a';
cptr = &achr;
string strcptr = Convert.ToString((long)cptr, 16);
Console.WriteLine("Ox{0} is the char ptr hex address", strcptr);

ポインターをバイトタイプに変換します。

char c = 'c';

unsafe
{
  Console.WriteLine("0x{0:x}", (ulong)&c);
  Console.WriteLine($"0x{(ulong)&c:x}");
}

これにより... 0x123ABC(2回)のようなものが表示されます

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top