阅读量:3
在C语言中,可以使用以下方法进行联合体的赋值:
使用点操作符(.)赋值:通过指定联合体成员的名称,将值赋给对应的成员。例如:
union myUnion { int i; float f; }; union myUnion u; u.i = 10; // 给联合体成员i赋值 u.f = 3.14; // 虽然给成员f赋值,但是会改变整个联合体的值
使用赋值操作符(=):将整个联合体的值替换为另一个具有相同成员类型的联合体的值。例如:
union myUnion { int i; float f; }; union myUnion u1; union myUnion u2; u1.i = 10; u2 = u1; // 将u1的值赋给u2
使用memcpy函数:将一个联合体的值复制到另一个联合体。例如:
#include <string.h> union myUnion { int i; float f; }; union myUnion u1; union myUnion u2; u1.i = 10; memcpy(&u2, &u1, sizeof(union myUnion)); // 将u1的值复制到u2
请注意,联合体的成员共享同一段内存空间,因此给一个成员赋值会影响其他成员。为了避免出现不确定行为,应该确保在给联合体的一个成员赋值之前,已经读取了另一个成员的值或者给其赋予了初值。