首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

联合体的赋值有关问题

2013-01-19 
联合体的赋值问题本帖最后由 yass8899 于 2013-01-11 04:29:01 编辑不知能否将整个联合体union赋值?union

联合体的赋值问题
本帖最后由 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;

这时你发现u1.i只有一个字节被改掉了

热点排行