Как отобразить адрес указателя в 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);
дает мне текущее значение по адресу указателя... что делать, если я хочу отобразить фактический адрес?
5 ответов
помните, что с управляемым кодом сборщик мусора может свободно двигаться вещи вокруг вас. Убедитесь, что PIN-код ваш объект вниз, если ваш в ситуации, когда адрес имеет значение.
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 (дважды)