memcpy - Rückgabewert



  • Hallo,

    memcpy hat ja die Signatur

    void *memcpy(void *dest, const void *src, size_t n);
    

    Wobei der Rückgabewert ein Pointer auf dest sein soll.
    Wenn ich das richtig verstehe ist also der Rückgabewert == dest.

    Warum aber wird ein Pointer zurückgegeben, den man bereits bei Aufruf übergibt, der also schon bekannt ist?


  • Mod

    Das erlaubt dir, Funktionsaufrufe zu verschachteln oder den Rückgabewert in einer Zuweisung zu benutzen. Beispiele (relativ sinnlos, bloß zur Demonstration):

    char old_buf[40];
    // Buffer 20 Zeichen weiterverschieben
    char *new_buf = memcpy(old_buf + 20, old_buf, 20);
    
    // Hier Verkettung von Funktionsaufrufen mit Zeichenketten, da mir spontan 
    // nichts sinnvolles für memcpy einfällt. Gibt es aber sicherlich auch!
    char buf[100];
    strcat(strcpy(buf, "Hallo"), " Welt");
    


  • Vielen Dank! 🙂


Anmelden zum Antworten