Использование memcpy в C++
Я немного запутался в параметрах для memcpy
3 ответов
Итак, приказ memcpy(destination, source, number_of_bytes).
таким образом, вы можете разместить старые данные в начале newarr С
memcpy(newarr, arr, 5 * sizeof *arr);
/* sizeof *arr == sizeof arr[0] == sizeof (int) */
или с
memcpy(newarr+1, arr, 5 * sizeof *arr);
потому что вы знаете тип данных arr и newarr, арифметика с указателями работает. Но внутри!--7--> он не знает тип, поэтому он должен знать количество байт.
Другой альтернативой является std::copy или std::copy_n.
std::copy_n(arr, 5, newarr);
для основных типов, таких как int, побитовая копия сделана memcpy будет работать нормально. Для реальных экземпляров класса необходимо использовать std::copy (или copy_n), так что будет использоваться настроенный оператор присваивания класса.
memcpy(dest,src,size)
dest -to which variable
src - from which variable
size - size of src varible
int* arr = new int[5]; //source
int* newarr = new int[6]; // destination
for(int i = 0;i<5;i++) {arr[i] = i * 3;printf(" %d ",arr[i]);}
memcpy(newarr,arr,sizeof(int)* 5);
for(int i = 0;i<5;i++) printf("%d",newarr[i]);