Einen Zeiger in eine Ganzzahl umwandeln
In einer Situation, in der ein void*-Argument in einen geeigneten Typ umgewandelt werden muss, ist es von entscheidender Bedeutung, dies zu tun Stellen Sie die Kompatibilität zwischen verschiedenen Maschinenarchitekturen sicher.
Auf einer 64-Bit-Maschine kann das Umwandeln eines void* in einen int zu Präzision führen Verlust. Um dieses Problem zu lösen, umfasst ein moderner C-Ansatz die Verwendung von reinterpret_cast
Korrekter Ganzzahltyp:
Um einen Zeiger korrekt als Ganzzahl zu speichern, ist der geeignete Typ uintptr_t oder intptr_t, definiert in < ;stdint.h> für C99 oder den Standard-Namespace für C 11.
Korrekter Casting-Operator:
In C ist reinterpret_cast die bevorzugte Umwandlung für Zeigerkonvertierungen. Vermeiden Sie die Verwendung der Besetzung C.
Beispiel:
#include <cstdint> void *p; std::uintptr_t i = reinterpret_cast<std::uintptr_t>(p);
Verwandte Fragen:
Das obige ist der detaillierte Inhalt vonWie kann ich einen void*-Zeiger in C sicher in eine Ganzzahl konvertieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!