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

How use memcpy to initialize array in struct

我有简单的结构:

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

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

 struct_type* init_fcn(double array[4]){

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

return retVal;
}

我可以一个一个地初始化值,但我认为 memcpy 会更好更快。你有什么想法如何正确地做吗?

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

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