我对memcpy函数的参数感到困惑.如果我有
int* arr = new int[5];
int* newarr = new int[6];
Run Code Online (Sandbox Code Playgroud)
我想将元素复制arr到newarr使用中memcopy,
memcpy(parameter, parameter, parameter)
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
Ben*_*igt 23
所以订单是memcpy(destination, source, number_of_bytes).
因此,你可以在开始将老的数据newarr与
memcpy(newarr, arr, 5 * sizeof *arr);
/* sizeof *arr == sizeof arr[0] == sizeof (int) */
Run Code Online (Sandbox Code Playgroud)
或者最后
memcpy(newarr+1, arr, 5 * sizeof *arr);
Run Code Online (Sandbox Code Playgroud)
因为你知道的数据类型arr和newarr,指针运算.但是里面memcpy它不知道类型,所以它需要知道字节数.
另一种选择是std::copy或std::copy_n.
std::copy_n(arr, 5, newarr);
Run Code Online (Sandbox Code Playgroud)
对于基本类型int,完成的按位复制memcpy将正常工作.对于实际的类实例,您需要使用std::copy(或copy_n)以便使用类的自定义赋值运算符.