在C語言中,可以使用以下方法進(jìn)行聯(lián)合體的賦值:
使用點操作符(.)賦值:通過指定聯(lián)合體成員的名稱,將值賦給對應(yīng)的成員。例如:
union myUnion {
int i;
float f;
};
union myUnion u;
u.i = 10; // 給聯(lián)合體成員i賦值
u.f = 3.14; // 雖然給成員f賦值,但是會改變整個聯(lián)合體的值
使用賦值操作符(=):將整個聯(lián)合體的值替換為另一個具有相同成員類型的聯(lián)合體的值。例如:
union myUnion {
int i;
float f;
};
union myUnion u1;
union myUnion u2;
u1.i = 10;
u2 = u1; // 將u1的值賦給u2
使用memcpy函數(shù):將一個聯(lián)合體的值復(fù)制到另一個聯(lián)合體。例如:
#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的值復(fù)制到u2
請注意,聯(lián)合體的成員共享同一段內(nèi)存空間,因此給一個成員賦值會影響其他成員。為了避免出現(xiàn)不確定行為,應(yīng)該確保在給聯(lián)合體的一個成員賦值之前,已經(jīng)讀取了另一個成員的值或者給其賦予了初值。