C語言 共用體的特點
通過上述例題,可以看出:
(1)共用體通過內存覆蓋技術,實現(xiàn)共用體變量各成員的內存共享,所以在某一時刻,共用體變量的內存地址中存放的、起作用的是最后一次存入的成員值。
(2)由于所有成員共享同一內存空間,故共用體變量與其各成員的地址相同。例如,&u1=&n1.a=&u1.b=&u1.c。
(3)不能對共用體變量進行初始化,也不能將共用體變量作為函數(shù)參數(shù),以及不能使函數(shù)返回一個共用數(shù)據(jù),但可以使用指向共用體變量的指針。
(4)對于共用體中定義的不同類型的成員,在引用時需要注意不同類型的差異,如:
union un
{
int a;
float b;
};
main()
{
union un ul;
ul.a=20;
ul.b=10;
printf("%f",ul.a);
}
程序執(zhí)行結果,有的讀者可能認為是10,但實際輸出是“0”。為什么會這樣呢?
因為共用體變量中起作用的是最后一次存入的成員值,也就是u1.b的值10,而u1.b類型為浮點型,在內存中的存儲方式與整型是不同的,所以當u1.b的值覆蓋了成員a時,并不能將10也賦值給成員a。
(5)共用類型可以出現(xiàn)在結構類型定義中,同樣,結構體類型定義中也可以出現(xiàn)共用體類型。
點擊加載更多評論>>