位置:首頁 > 軟件操作教程 > 編程開發(fā) > C語言 > 問題詳情

C語言 共用體的特點(diǎn)

提問人:劉團(tuán)圓發(fā)布時(shí)間:2020-12-02

通過上述例題,可以看出:

(1)共用體通過內(nèi)存覆蓋技術(shù),實(shí)現(xiàn)共用體變量各成員的內(nèi)存共享,所以在某一時(shí)刻,共用體變量的內(nèi)存地址中存放的、起作用的是最后一次存入的成員值。

(2)由于所有成員共享同一內(nèi)存空間,故共用體變量與其各成員的地址相同。例如,&u1=&n1.a=&u1.b=&u1.c。

(3)不能對(duì)共用體變量進(jìn)行初始化,也不能將共用體變量作為函數(shù)參數(shù),以及不能使函數(shù)返回一個(gè)共用數(shù)據(jù),但可以使用指向共用體變量的指針。

(4)對(duì)于共用體中定義的不同類型的成員,在引用時(shí)需要注意不同類型的差異,如:

union un 

{

    int a; 

    float b;

};

main()

{

    union un ul;

    ul.a=20;

    ul.b=10;

    printf("%f",ul.a);

}

    程序執(zhí)行結(jié)果,有的讀者可能認(rèn)為是10,但實(shí)際輸出是“0”。為什么會(huì)這樣呢?

    因?yàn)楣灿皿w變量中起作用的是最后一次存入的成員值,也就是u1.b的值10,而u1.b類型為浮點(diǎn)型,在內(nèi)存中的存儲(chǔ)方式與整型是不同的,所以當(dāng)u1.b的值覆蓋了成員a時(shí),并不能將10也賦值給成員a。

(5)共用類型可以出現(xiàn)在結(jié)構(gòu)類型定義中,同樣,結(jié)構(gòu)體類型定義中也可以出現(xiàn)共用體類型。

繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部