|
共用體-閱后即焚的變量
union共用體即它內(nèi)部的成員,存儲在同一個地址空間中。
1.jpg (64.39 KB, 下載次數(shù): 75)
下載附件
2022-8-24 09:41 上傳
2.jpg (64.86 KB, 下載次數(shù): 76)
下載附件
2022-8-24 09:42 上傳
3.jpg (63.34 KB, 下載次數(shù): 66)
下載附件
2022-8-24 09:42 上傳
4.jpg (62.97 KB, 下載次數(shù): 68)
下載附件
2022-8-24 09:42 上傳
通過圖示,比較生動的讓大家看到,不論來了多少個成員,所有成員只能存儲在同一個地址空間中。那么地址空間的大小具體應(yīng)該是多大呢?
地址空間的大小取決于最大的數(shù)據(jù)類型,最大的數(shù)據(jù)類型有多大,共用體數(shù)據(jù)的大小就有多少:
5.jpg (51.67 KB, 下載次數(shù): 77)
下載附件
2022-8-24 09:42 上傳
6.jpg (53.4 KB, 下載次數(shù): 69)
下載附件
2022-8-24 09:42 上傳
從圖示代碼中,可以明確的看到,共用體變量的大小,取決于共用體成員中最大的數(shù)據(jù)類型,即當(dāng)最大的是int型整型變量的時候,共用體大小就為4字節(jié),當(dāng)為double類型的時候,共用體大小就變成了8字節(jié)。
那么接下來再帶大家看一下,我們今天的重點,也是對于新手而言比較容易入坑的點,小李將這個特點稱為-“閱后即焚的變量”。
7.jpg (100.46 KB, 下載次數(shù): 84)
下載附件
2022-8-24 09:43 上傳
從代碼中,我們可以看到,當(dāng)我們對公用體的第二個成員賦值之后,再看共用體的第一個成員值,也被改變了。這就是對于共用體的成員都存在同一個地址空間的體現(xiàn)。一個char型變量有8位,當(dāng)我們賦值之后,系統(tǒng)就會在共用體空間的低八位進(jìn)行存儲。從而之前存儲的內(nèi)容就被覆蓋了。
8.jpg (58.9 KB, 下載次數(shù): 71)
下載附件
2022-8-24 09:43 上傳
總結(jié),共用體的成員全部存儲在一個空間中,所以對于成員的使用,必須要即配即用,閱后即焚,在一個成員賦值之后,其它的成員的值都會由于公用地址空間的原因受到影響
|
評分
-
查看全部評分
|