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

时间:2017-02-12 18:05:05

标签: 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;
}

我可以逐个初始化值,但我的内存将更好更快。你有任何想法如何正确吗?

1 个答案:

答案 0 :(得分:4)

如果要返回指向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;
}