找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

C語言:共用體-閱后即焚的變量

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1040469 發(fā)表于 2022-8-24 09:43 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
共用體-閱后即焚的變量

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


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

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



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

那么接下來再帶大家看一下,我們今天的重點,也是對于新手而言比較容易入坑的點,小李將這個特點稱為-“閱后即焚的變量”。


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


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

評分

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

查看全部評分

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

使用道具 舉報

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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