Ich habe diese Struktur:Cast void * auf struct *
typedef struct
{
UINT8 a;
UINT8 len;
BYTE *data;
} MyStruct;
und dieses binäre array [0x00, 0x03, 0x08, 0x09, 0x0A], die zu einem void * Variable "BinData" zugeordnet ist.
Wie kann ich BINDATA zu MyStruct umwandeln und auf sein "Daten" -Feld zugreifen können?
Ich habe versucht:
MyStruct *myStruct = (MyStruct*) BINDATA;
Danach habe ich den Zugriff konnte:
myStruct->a; //gave me 0x00
myStruct->len; //gave me 0x03
Aber ich konnte nicht zugreifen
myStruct->data;
ohne Speicherzugriffsverletzung. Ich denke, das liegt daran, dass der Adresszeiger "Daten" auf 0x08 und nicht auf seinen Wert gesetzt wird.
Was ist '' 'myStruct-> b'''? in Ihrer Struktur kann ich b Mitglied nicht sehen. –
Ist das C oder C++? – TartanLlama
Nicht definiertes Verhalten für den Zugriff auf ein Objekt über einen Lvalue, der nicht dem effektiven Typ des Objekts entspricht. – EOF