The memcpy() function returns the original value of dst.



  • Kann mir mal jemand verraten was der Sinn des Rückgabewerts von std::memcpy ist?

    Der gibt mir ja einfach zurück was ich ihm als 1. Parameter übergeben hab. Dann kann er es ja auch eigentlich lassen?!?

    http://www.hmug.org/man/3/memcpy.php



  • Nun, die C Entwickler hatten das wohl für Verknüpfungen vorgesehen. Wird in der Praxis aber so gut wie nicht benutzt.



  • kommt wohl aus der assembler-zeit. man hat einfach definiert, was im akku zu stehen hat, wenn die funktion fertig ist.



  • Ich würde mal darauf tippen, dass es dazu diente um Macros zu bauen die als Ausdrücke gebraucht werden können. Beispiel:

    #define HEAP_COPY(what) memcpy(malloc(sizeof(what)), &(what), sizeof(what))
    

    Wenn memcpy den Pointer nicht zurückgeben würde, dann könnte man nicht

    int a = 5;
    foo(HEAP_COPY(a));
    

    schreiben ohne wenigstens eine Hilfsfunktion oder globale Variable zu benutzen.

    Ein andere möglicher Grund wäre, dass memcpy rückwärtskompatible mit vor void Zeiten sein soll. An sich gibt jede Funktion ja einen Wert zurück und void sagt dem Compiler ja nur, dass er der Rückgabewert immer ignorieren soll. Würde mich also nicht wundern wenn in einem frühen Stadium der Sprachentwickelung alle Funktionen einen Wert zurückgeben mussten.

    Aber wie bereits gesagt, das sind nur Vermutungen.



  • -.-


Anmelden zum Antworten