Zugreifen auf die Bytes einer Integer in C
-
Du kannst als Ahnungsloser überhaupt nicht beurteilen, was sinnvoll ist oder nicht, ebenso wie dein Lehrer es nicht kann. Trolle dich an deine Uni und halte die Klappe.
-
Printe schrieb:
Zitat aus der Aufgabenstellung: Ergänzen Sie das folgende Programm mittels Zeigerarithmetik so, dass das Byte an der Stelle byteIndex im Array-Element array[arrayIndex] auf den Wert neuerInhalt gesetzt wird.
Dann bleibt quasi nur die Lösung:
*((char*)&(array[arrayIndex])+byteIndex) = neuerInhalt;
Sieht aber total hässlich aus.
-
Schichtarbyter schrieb:
Sieht aber total hässlich aus.
Ich finde das gut. Alles Wesentliche in einem einzigen Ausdruck.
-
Schichtarbyter schrieb:
Dann bleibt quasi nur die Lösung:
*((char*)&(array[arrayIndex])+byteIndex) = neuerInhalt;
Ich würde das lesbarkeitshalber mit Zwischenschritten machen (int-Pointer, char-Pointer und dann schreiben) und die Optimierung dem Compiler überlassen, aber Prinzip ja, das wäre der Weg.
-
Printe schrieb:
Ich würde das lesbarkeitshalber mit Zwischenschritten machen (int-Pointer, char-Pointer und dann schreiben)
Oder man versteckt das Gewurschtel in ein Makro ...
#define BYTE_PTR(addr,offset) (*((char*)&(addr)+(offset)))
und dann
// Setzen BYTE_PTR (array[arrayIndex], byteIndex) = neuerInhalt; // lesen printf ("%d", BYTE_PTR (array[arrayIndex], byteIndex));