如何使用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;
}
我有简单的结构:
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;
}