将结构复制到不同的结构

Copy structure to a different structure

我想知道是否有一种优雅的方法可以将一个结构复制到另一个结构,其中第二个结构与原始结构基本相同,只是没有最后一个字段。

例如,

struct A {
    int a;
    int b;
    int c;
};
struct B {
    int a;
};

struct A v1;
struct B v2;

会,

memcpy(&v2, &v1, sizeof(v2));

实现我想要的功能? 其中 v2 具有最初在 v1 中找到的 "a" 值?

谢谢

如果您不复制 A 中的所有字节,而是只复制 B 期望的字节数,您将获得所需的结果:

memcpy(&v2, &v1, sizeof(v2)); // remember that the first argument is the destination

但是,这不是好的编码风格。对于这个最小的代码示例,很难说清楚,但您可能希望 A 继承自 B,以便您可以转换两者而无需物理复制内存。

否则,这会更简单、更干净:

b2.a = v1.a;