C阵列复制

时间:2019-03-19 19:24:41

标签: c arrays copy malloc

我为自己创建了一个数组:

double* input_array_pointer;
input_array_pointer = (double*)malloc(input_array_size * sizeof(double));

fill_array(input_array);

现在我的数组充满了双打。

我需要制作输出数组,该数组需要是输入数组的副本,但我得到的只是指向输入数组的指针。 (因此,我在输出数组上所做的所有工作(例如更改某些数字)都将应用于输入数组。)

这是我做错的方法:

double* output_array_pointer;
    output_array_pointer = (double*)malloc(array_size * sizeof(double))/*memory allocation using malloc*/

memcpy(output_array_pointer, input_array_pointer, (sizeof(input_array_pointer))+1);

正确的方法是什么?

1 个答案:

答案 0 :(得分:1)

sizeof操作符仅在静态声明的数组(例如:double my_array[10])上“起作用”。否则,sizeof返回指针的大小,这不是您想要的大小。

要正确复制动态分配的阵列,您需要知道该阵列的大小。您的情况是input_array_size

memcpy(output_array_pointer, input_array_pointer, input_array_size * sizeof(double));