Der Martin: C - Pointer-Arithmetik Problem

Beitrag lesen

Hallo,

Was ich wissen möchte ist, ob der Compiler bei p++; nicht um 1 Byte oder Bit erhöht, sondern um die Größe der Struktur auf die p zeigt.
Ich hoffe, ich konnte mich verständlich ausdrücken.

Absolut verständlich, ja. :-)
Und ja, es ist wirklich so, dass der Zeiger bei Additionen, Subtraktionen, oder auch Increments oder Decrements immer in Schritten erhöht oder verringert wird, die der größe des zugeordneten Datentyps entsprechen. Bei BYTE* also um ein Byte, bei DWORD* um vier Byte, bei structs um die jeweilige Strukturgröße.
Nur bei void* versagt die Arithmetik, gerade weil das ein typenloser Zeiger ist und die Größeninformation fehlt. Deswegen sind solche Operationen für void* auch nicht definiert (was ich gelegentlich bedaure).

Schönes Wochenende,

Martin

--
Lieber Blödeleien als blöde Laien.