Du kannst natürlich auch Casts aneinanderreihen. Rein semantisch ist das da richtig, aber es würde etwas anders deutlicher werden, was es macht:
Code:
ViTableStart = (DWORD*) *(DWORD**)(source);
Du siehst, es wird erst in einen Doppelzeiger, einen Zeiger auf einen Zeiger auf ein DWORD gecastet. Danach wird dieser mithilfe des * dereferenziert, man erhält also den eigentlichen DWORD*.
Dann könnte man sich den ersten Cast sparen, da der Typ sowieso schon DWORD* ist.
Dein Beispiel castet einfach nur die DWORD Variable in einen DWORD*.
Bessere Version also:
Code:
ViTableStart = *(DWORD**)(source);
Quote:
source wird in einen dword* gecastet und dann dereferenziert.
das dereferenzierte wird dann wieder in einen dword* gecastet.
|
Das Dereferenzierte wäre ja ein DWORD. Würde man gleich in DWORD** casten, wäre der weitere Cast unnötig und man bräuchte nur zu dereferenzieren.