我有简单的结构:
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;
}
我可以逐个初始化值,但我的内存将更好更快。你有任何想法如何正确吗?
答案 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;
}