使用浮动作为成员在C中复制结构

时间:2015-07-26 18:17:47

标签: c

我有三种结构类型,如下所示......

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

有更有效的方法吗?

2 个答案:

答案 0 :(得分:4)

最有效的方式(在短源代码,可维护性,可扩展性,运行时速度,但不一定是目标代码大小的意义上)将是:

xyz1.abc1 = xyz2.abc2;

了解结构分配。

请注意

fn()

不是有效的函数声明。请使用正确的原型语法,K& R-style很久就过时了;自C99以来,你的编译器必须警告它; C11已宣布过时(希望在C17中)。

答案 1 :(得分:0)

您可以执行memcpymemmove

memcpy(&xyz1.abc1, &xyz2.abc2, sizeof(ABC));
memmove(&xyz1.abc1, &xyz2.abc2, sizeof(ABC));