Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C数组复制_C_Arrays_Copy_Malloc - Fatal编程技术网

C数组复制

C数组复制,c,arrays,copy,malloc,C,Arrays,Copy,Malloc,我给自己做了一个数组: double* input_array_pointer; input_array_pointer = (double*)malloc(input_array_size * sizeof(double)); fill_array(input_array); 现在我有一个满是替身的阵型 我需要做一个输出数组,它需要是输入数组的副本,但我得到的只是指向输入数组的指针。 (因此,我对输出数组所做的所有工作(例如更改某些数字)都将应用于输入数组。) 我是这样做的,这是错误的:

我给自己做了一个数组:

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);

正确的方法是什么?

sizeof
运算符仅对静态声明的数组“起作用”(例如:
将my_数组[10]加倍)。
)。否则,
sizeof
返回指针的大小,这不是您想要的大小

要正确复制动态分配的数组,您需要知道该数组的大小。在您的例子中,这是
输入数组大小

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

sizeof
在这里对您没有帮助,您需要自己跟踪数组长度。
sizeof
指针返回指针本身的大小,而不是它可能指向的任何数据。如果大小不是那么大,您可以将数组放在堆栈上,那么sizeof可以工作您好,非常感谢!现在,当我尝试加入阵列的一部分时,我的程序出现了崩溃的问题,然后使用memcpy将阵列的这一部分复制到另一部分,同时通过for cycle移动阵列的起始点,崩溃的问题在哪里?