Domanda

Non ho fatto alcun suggerimento da quando ho programmato in C# e i miei giorni in C++ erano molto tempo fa.Ho pensato che avrei dovuto rinfrescare le mie conoscenze e stavo solo giocando con loro a causa di un'altra domanda qui.Li capisco tutti bene, ma non riesco a capire come scrivere l'indirizzo del puntatore sulla 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";

Utilizzando Console.WriteLine(*cp); mi dà il valore corrente all'indirizzo del puntatore...cosa succede se voglio visualizzare l'indirizzo effettivo?

È stato utile?

Soluzione

Console.WriteLine(new IntPtr(cp));

Altri suggerimenti

Ricorda che con il codice gestito il Garbage Collector è libero di spostare le cose su di te. Assicurati di spillo Il tuo oggetto verso il basso se sei in una situazione in cui l'indirizzo è 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);

Converti il ​​tuo puntatore in tipo byte.

char c = 'c';

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

Questo visualizzerà qualcosa come ... 0x123abc (due volte)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top