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


Anmelden zum Antworten