19

私は 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);すると、ポインターアドレスの現在の値が得られます...実際のアドレスを表示したい場合はどうすればよいですか?

4

5 に答える 5

25
Console.WriteLine(new IntPtr(cp));
于 2010-01-13T14:55:30.577 に答える
4

マネージ コードを使用すると、ガベージ コレクターが自由に物事を移動できることに注意してください。住所が重要な状況にある場合は、必ずオブジェクトを固定してください。

于 2010-01-13T14:57:52.037 に答える
1
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);
于 2015-08-22T12:27:09.893 に答える
0

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

于 2010-01-13T14:55:01.950 に答える
0
char c = 'c';

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

これは次のように表示されます... 0x123abc (2回)

于 2017-06-26T13:54:43.023 に答える