C 数组复制

标签 c arrays copy malloc

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

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

fill_array(input_array);

现在我的数组充满了 double 。

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

这是我的错误做法:

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 运算符仅适用于静态声明的数组(例如:double my_array[10])。否则,sizeof 返回指针的大小,这不是您想要的。

要正确复制动态分配的数组,您需要知道该数组的大小。在您的情况下,这是 input_array_size:

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

关于C 数组复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55248622/

相关文章:

java - 使用 Java 驱动程序更新 MongoDB 中的数组

arrays - 从 rust 中从数组转换的字符串中删除多余的长度

c++ - 在 C++ 中引用而不通过引用传递

copy - Yeoman 生成器 - 深度复制空文件夹结构

c - 如何创建一个计时器/时钟,它可以将其值发回,存储在一个变量中,仅在 C 和 mikroC 上延迟

c - 如何在 IAR 上使用 stdin.h

javascript - 无法使用表属性创建有效的嵌套数组(Vanilla JS)

Java - 复制 JPG 同时保留所有文件属性

c - C语言登录程序

C 从 fork 调用的多个 exec 中读取标准输出