Pergunta

Eu não fiz nenhuma dica desde que estou programando em C# - e meus dias C ++ foram há muito tempo. Eu pensei que deveria refrescar meu conhecimento e estava apenas brincando com eles por causa de outra pergunta aqui. Eu entendo todos eles bem, mas não consigo descobrir como escrever o endereço do ponteiro no console ...

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";

Usando Console.WriteLine(*cp); Me dá o valor atual no endereço do ponteiro ... e se eu quiser exibir o endereço real?

Foi útil?

Solução

Console.WriteLine(new IntPtr(cp));

Outras dicas

Lembre -se de que, com o código gerenciado, o coletor de lixo é livre para mover as coisas em você. Tenha certeza de alfinete Seu objeto para baixo se você estiver em uma situação em que o endereço é importante.

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);

Converta seu ponteiro em tipo de byte.

char c = 'c';

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

Isso exibirá algo como ... 0x123ABC (duas vezes)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top