将结构复制到不同的结构
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;
我想知道是否有一种优雅的方法可以将一个结构复制到另一个结构,其中第二个结构与原始结构基本相同,只是没有最后一个字段。
例如,
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;