memcpy vgl. mit char*



  • Müsste folgendes nicht den gleichen Zweck erfüllen:

    unsigned int DataA = 212;
    unsigned int DataB = 218;
    char* = buf;

    buf = (char*)malloc((sizeof(unsigned int))*2);

    memset(buf, 0, (sizeof(unsigned int))*2);
    memcpy(buf, &DataA, sizeof(unsigned int));
    memcpy(buf+(sizeof(unsigned int)), &DataA, sizeof(unsigned int));

    Wie oben beschrieben funktioniert es so, wie ich es möchte.

    Müsste es aber nicht eigentlich möglich sein, die letzte Zeile durch folgendes zu ersetzen:

    buf = buf + (sizeof(unsigned int));
    buf = &DataB;

    Leider funktioniert letzteres aber nicht.



  • EF2004 schrieb:

    buf = buf + (sizeof(unsigned int));
    buf = &DataB;

    Leider funktioniert letzteres aber nicht.

    Das funktioniert schon, ...
    .. aber anders als du denkst. buf zeigt jetzt auf DataB und nicht mehr auf den Bereich, den du von malloc bekommen hast.

    ((unsigned  int*)buf)[0] = DataA;
    ((unsigned  int*)buf)[1] = DataB;
    

    macht es auch und ist lesbarer.

    Aber warum muß buf ein char* sein?
    Warum kann es kein unsignd int* sein?


Log in to reply