So the order is memcpy(destination, source, number_of_bytes).
Therefore, you can place the old data at the beginning of newarr with
memcpy(newarr, arr, 5 * sizeof *arr);
/* sizeof *arr == sizeof arr[0] == sizeof (int) */
or at the end with
memcpy(newarr+1, arr, 5 * sizeof *arr);
Because you know the data type of arr and newarr, pointer arithmetic works. But inside memcpy it doesn't know the type, so it needs to know the number of bytes.
Another alternative is std::copy or std::copy_n.
std::copy_n(arr, 5, newarr);
For fundamental types like int, the bitwise copy done by memcpy will work fine. For actual class instances, you need to use std::copy (or copy_n) so that the class's customized assignment operator will be used.