联合体的赋值问题
本帖最后由 yass8899 于 2013-01-11 04:29:01 编辑 不知能否将整个联合体union赋值?union中各变量共享一段内存,即每次只会用其中一个变量,那么要赋值时可以直接整体赋值,还是判断后给其中一个有值的变量赋值?
struct A
{
union
{
struct B
{}b;
struct C
{}c;
struct D
{}d;
}e;
struct F
{}f;
....
}a;
A b;
现需将a中联合体中的内容赋值给b, 可以用b.e = a.e; 吗? union struct c
[解决办法]
要用memcpy函数直接拷贝数据。
[解决办法]
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
[解决办法]
如果联合内各成员的大小都相同,可以随便选一个,但实际情况往往不是这样的。
比如
union U
{
int i;
char c;
} u1, u2;
u1.i = 0x12345678;
u2.i = 0x87654321;
u1.c = u2.c;