我想知道是否存在一种将结构复制到其他结构的优雅方法,其中第二个结构与原始结构基本相同,但没有最后一个字段。
例如,
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”值的地方?
谢谢
答案 0 :(得分:1)
如果仅复制B期望的字节数,而不是复制A中的所有字节,则将实现所需的结果:
memcpy(&v2, &v1, sizeof(v2)); // remember that the first argument is the destination
但是,这不是好的编码样式。通过这个最小的代码示例,很难说清,但是您可能希望A从B继承,以便您可以转换两者而不必物理复制内存。
否则,这将更容易,更干净:
b2.a = v1.a;