找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2214|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

C語(yǔ)言:共用體-閱后即焚的變量

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
共用體-閱后即焚的變量

union共用體即它內(nèi)部的成員,存儲(chǔ)在同一個(gè)地址空間中。


通過(guò)圖示,比較生動(dòng)的讓大家看到,不論來(lái)了多少個(gè)成員,所有成員只能存儲(chǔ)在同一個(gè)地址空間中。那么地址空間的大小具體應(yīng)該是多大呢?

地址空間的大小取決于最大的數(shù)據(jù)類(lèi)型,最大的數(shù)據(jù)類(lèi)型有多大,共用體數(shù)據(jù)的大小就有多少:



從圖示代碼中,可以明確的看到,共用體變量的大小,取決于共用體成員中最大的數(shù)據(jù)類(lèi)型,即當(dāng)最大的是int型整型變量的時(shí)候,共用體大小就為4字節(jié),當(dāng)為double類(lèi)型的時(shí)候,共用體大小就變成了8字節(jié)。

那么接下來(lái)再帶大家看一下,我們今天的重點(diǎn),也是對(duì)于新手而言比較容易入坑的點(diǎn),小李將這個(gè)特點(diǎn)稱(chēng)為-“閱后即焚的變量”。


從代碼中,我們可以看到,當(dāng)我們對(duì)公用體的第二個(gè)成員賦值之后,再看共用體的第一個(gè)成員值,也被改變了。這就是對(duì)于共用體的成員都存在同一個(gè)地址空間的體現(xiàn)。一個(gè)char型變量有8位,當(dāng)我們賦值之后,系統(tǒng)就會(huì)在共用體空間的低八位進(jìn)行存儲(chǔ)。從而之前存儲(chǔ)的內(nèi)容就被覆蓋了。


總結(jié),共用體的成員全部存儲(chǔ)在一個(gè)空間中,所以對(duì)于成員的使用,必須要即配即用,閱后即焚,在一個(gè)成員賦值之后,其它的成員的值都會(huì)由于公用地址空間的原因受到影響

評(píng)分

參與人數(shù) 1黑幣 +15 收起 理由
1109 + 15 贊一個(gè)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:57414 發(fā)表于 2022-8-24 17:23 | 只看該作者
圖文并茂,很精彩,謝謝樓主!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表