Convertieren von *(int*)(buffer).
-
Hallo,
ich glübel schon seit langen was "(int)(buffer)" sein kann, dann das jemand in Pascal übersetzen, danke!
char buffer[1024]; printf(" %x\n", *(int *)(buffer));
-
char buffer[ 1024 ]; * \ (int *) \ Interpretiert als > dereferenziert (buffer); -> Adresse von buffer[ 0 ] / zeiger auf Integer /greetz, Swordfish
-
Man könnte auch schreiben:
buffer ist ein Zeiger auf char, kann also ein Byte weit 'gucken',
denn ein dereferenzieren in Form von *buffer, würde dir in der Index-Schreibweise den Inhalt des ersten Byte, nämlich buffer[0] liefern.(int* buffer );
Zack ! Was passiert hier ?
buffer hat ein Fernglas bekommen, mittlerer Stärke. buffer kann nun sizeof(int) weit gucken, weil buffer jetzt ein Zeiger auf int ist.(int buffer );
Schwupp ! Ja was ist denn hier los ?
Der Zeiger auf int wird jetzt dereferenziert, d.h. hinter dem Ausdruck verbirgt sich ein Integerwert.
Mit anderen Worten:
Die ersten sizeof(int) Byte( würde sagen meistens vier), auf die buffer zeigt, werden als ein int-Wert interpretiert, welcher von der printf-Funktion in hexadezimaler Form ausgegeben wird.
Evtl. ist noch zu beachten, das buf[0] das LSB dieses Wertes ist.
MfG