c - 如何使用memcpy初始化struct中的数组

标签 c arrays struct memcpy

我有简单的结构:

typedef struct{
double par[4];
}struct_type;

我还为它初始化函数,其中一个参数是一个 4 元素数组。如何正确使用memcpy 初始化struct 中的数组?这样的事情对我不起作用:

 struct_type* init_fcn(double array[4]){

 struct _type* retVal;
 retVal->par=malloc(sizeof(double)*4);
 memcpy(retVal->par,&array);

return retVal;
}

我可以一个一个地初始化值,但我认为 memcpy 会更好更快。您对如何正确执行有任何想法吗?

最佳答案

如果你想返回一个指向struct_type 类型的新对象的指针,那么你应该创建这样一个对象,即使用malloc(sizeof(struct_type))而不是直接为任何成员分配空间。因此您的代码可能如下所示:

struct_type* init_fcn(double array[4]){

    struct_type* retVal;
    retVal = malloc(sizeof(struct_type));
    if (retVal) {
        memcpy(retVal->par,array,sizeof(retVal->par));
    }

    return retVal;
}

关于c - 如何使用memcpy初始化struct中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42191222/

相关文章:

c - 将二进制文件读入 char* 并转换为结构体?

C 结构体指针从第一个元素到最后一个元素

c - 通用堆栈实现中的空指针(纯 C)

c - 多键一值数据结构 (C)

javascript - 每次输入新行js后的平均工资

javascript - jQuery:如何创建每个项目有两个值的数组

c - C 是否将结构填充初始化为零?

c - MingW32 中的“sys/socket.h”

c++ - 为 OpenGL 设置剪切矩形?

c# - 如何使用 LINQ 对数组进行分页?