我有三种结构类型,如下所示......
typedef struct _ABC_
{
float a;
float b;
float c;
}ABC;
typedef struct _XYZ_1_
{
int a0;
ABC abc1;
}XYZ1;
typedef struct _XYZ_2
{
int a1;
ABC abc2;
}XYZ2;
我想将struct XYZ2中的struct ABC复制到struct XYZ1中定义为成员的struct ABC。
我知道最基本的方式:
fn(){
XYZ2 xyz2;
XYZ1 xyz1;
/* …code to initialize… */
xyz1.abc1.a = xyz2.abc2.a;
xyz1.abc1.b = xyz2.abc2.c;
xyz1.abc1.c = xyz2.abc2.c;
}
有更有效的方法吗?
答案 0 :(得分:4)
最有效的方式(在短源代码,可维护性,可扩展性,运行时速度,但不一定是目标代码大小的意义上)将是:
xyz1.abc1 = xyz2.abc2;
了解结构分配。
请注意
fn()
不是有效的函数声明。请使用正确的原型语法,K& R-style很久就过时了;自C99以来,你的编译器必须警告它; C11已宣布过时(希望在C17中)。
答案 1 :(得分:0)
您可以执行memcpy
或memmove
:
memcpy(&xyz1.abc1, &xyz2.abc2, sizeof(ABC));
memmove(&xyz1.abc1, &xyz2.abc2, sizeof(ABC));