So ist die Bestellung memcpy(destination, source, number_of_bytes)
.
Daher können Sie die alten Daten zu Beginn des newarr
mit
memcpy(newarr, arr, 5 * sizeof *arr);
/* sizeof *arr == sizeof arr[0] == sizeof (int) */
oder am Ende Platz mit
memcpy(newarr+1, arr, 5 * sizeof *arr);
Da Sie den Datentyp arr
und newarr
, Zeigerarithmetik kennen funktioniert. Aber innerhalb memcpy
kennt es den Typ nicht, also muss er die Anzahl der Bytes wissen. Eine andere Alternative ist std::copy
oder std::copy_n
.
std::copy_n(arr, 5, newarr);
Für grundlegende Typen wie int
, kopieren Sie die bitweise durch memcpy
getan fein arbeiten. Für tatsächliche Klasseninstanzen müssen Sie std::copy
(oder copy_n
) verwenden, damit der benutzerdefinierte Zuweisungsoperator der Klasse verwendet wird.
Welche Dokumentation haben Sie für Memcpy? –