Der Martin: (C) Was bedeutet (char *)?

Beitrag lesen

Hallo Markus,

c = (char *) malloc ( 128*128 * 2*sizeof (char) );

du hast doch schon ganz richtig erkannt, dass ein Datentyp in Klammern vor einem Ausdruck eine Typumwandlung, auch als type cast bekannt, bedeutet. Und der Stern in Verbindung mit einem Datentyp bedeutet doch einen Zeiger auf den entsprechenden Typ, wie z.B. in der Deklaration

char *c;

Was bedeutet dann char in Klammer mit dem Stern?

Logischerweise einen type cast in einen Zeiger auf char. Wobei das in Verbindung mit malloc() recht sinnfrei ist, denn malloc() liefert sowieso einen untypisierten Zeiger, also void*, der zu allen anderen Zeigertypen zuweisungskompatibel ist. Ein type cast nach dem Aufruf von malloc() erfüllt also keinen sinnvollen Zweck, sondern erschwert nur das Lesen.

*(Uint32 *)pixaddr = pixel;

"Nimm den aktuellen Wert von pixaddr, tu so als sei es ein Zeiger auf Uint, und weise dem Uint, auf den es dann zeigen würde, den Wert von pixel zu."

Schönen Abend noch,

Martin