C#にポインターアドレスを表示するにはどうすればよいですか?
質問
私は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回)のようなものが表示されます
所属していません StackOverflow