[C++] Cast Frage



  • Hallo Leute,
    ich habe eine Problem mit einem Cast, den ich nicht so recht verstehen will.
    Bevor ich da was falsches mache, wollte ich noch mal eine Erklärung zu dem Cast fragen.

    DWORD* x = *( DWORD** )0xAdresse;
    

    x, ist klar, aber der Cast ( DWORD** ), was macht der jetz genau mit meiner Adresse? Die Dereferenzierung von dem Cast, ist wieder klar. Aber was der double Pointer zu der Adresse genau verändert vertehen ich nicht ganz.
    Ich hoffe mir kann das jemand mal erklären.

    MfG


  • Mod

    Das casted das Ding zu einem Pointer auf Pointer auf DWORD, d.h. der Wert 0xAdresse wird als dieser Typ aufgefasst. Dann wird dies einmal dereferenziert (d.h. es wird auf den Wert des Pointers, also 0xAdresse, zugegriffen) und das was dort steht wird als der Datentyp interpretiert, auf den der Pointer zeigt. Hier also als ein Pointer auf DWORD. Und dieser wird dann x zugewiesen. Kurz gesagt, x hat hinterher den Wert, der an 0xAdresse steht.

    Und sei konsequent, nimm in C++ reinterpret_cast.



  • Dann doch lieber gleich:

    std::uint32_t* coffee = reinterpret_cast<std::uint32_t*>(0xC0FFEE);
    


  • Vielen Danke für die Hilfe. Hab es jetz auch mit C++-Cast gemacht.

    DWORD* x = *reinterpret_cast< DWORD** >( 0xAdresse );
    

    MfG



  • 314159265358979 schrieb:

    Dann doch lieber gleich:

    std::uint32_t* coffee = reinterpret_cast<std::uint32_t*>(0xC0FFEE);
    

    Das tut aber etwas anderes.



  • Hrmpf, stimmt. Statt DWORD trotzdem uint32_t nehmen.


Anmelden zum Antworten