Nur eines verstehe ich noch nicht:
// (1) uint32_t le = 1146244951; // Integer uint8_t *b = (uint8_t*)≤ // mit address operator printf("%c%c%c%c\n",b[0],b[1],b[2],b[3]); // WORD // (2) char *a = "WORD"; // Binary uint32_t *w = (uint32_t*)a; // ohne address operator printf("%d \n", w[0]); // 1146244951
Warum einmal mit und einmal ohne &Addressoperator?
Versuch einer Antwort: Im Fall (2) wird die Binary a
direkt in den Hauptspeicher gelegt. Das *
vor dem w
dereferenziert und so kann die Binary a
direkt als Wert an *w
zugewiesen werden. Mit dem Cast zum 32-Bit-Integer versteht sich.
Im Fall (1) hingegen wird nicht die Binary in den Hauptspeicher geschrieben sondern den Little Endian als Integer. Somit brauchen wir für die Zuweisung an b
die Adresse welche der Addressoperator liefert.
MfG