c語(yǔ)言sizeof函數(shù)用法 C語(yǔ)言u(píng)nion的用法?
C語(yǔ)言u(píng)nion的用法?Union本質(zhì)上是C中的一個(gè)結(jié)構(gòu),它的用法類(lèi)似于struct。當(dāng)您使用聯(lián)合名稱(chēng){//。。。Member}若要聲明類(lèi)型,調(diào)用時(shí)應(yīng)在nameUnion type name vari
C語(yǔ)言u(píng)nion的用法?
Union本質(zhì)上是C中的一個(gè)結(jié)構(gòu),它的用法類(lèi)似于struct。當(dāng)您使用
聯(lián)合名稱(chēng){
//。。。Member
}若要聲明
類(lèi)型,調(diào)用時(shí)應(yīng)在name
Union type name variable name
后綴表達(dá)式前添加關(guān)鍵字Union表達(dá)式標(biāo)識(shí)符以
a.member1=10//a的形式調(diào)用成員是union
P->member1=20//P是指向union的指針
但有一些區(qū)別:
1。顧名思義,工會(huì)是許多成員共享一段記憶。在編譯時(shí),選擇最長(zhǎng)的成員進(jìn)行聲明。也就是說(shuō),在下面和程序片段中:
union a{//聲明了三個(gè)成員,但是長(zhǎng)度不同(sizeof的結(jié)果不同,但是機(jī)器的結(jié)果不同,但是double肯定是最長(zhǎng)的),所以編譯器會(huì)選擇double的長(zhǎng)度作為union a的長(zhǎng)度
int A1//sizeof(int)=4
float A2//sizeof(float)=8
double A3//sizeof(double)=16]換句話說(shuō),內(nèi)存中的上述聯(lián)合聲明等價(jià)于
struct a{
double A3
}
2。根據(jù)第一條的特點(diǎn),在給聯(lián)合成員賦值之后,需要注意的是,在使用時(shí)必須調(diào)用被賦值的成員。