真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C語言共用體聯(lián)合體是什么

本篇內(nèi)容主要講解“C語言共用體聯(lián)合體是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“C語言共用體聯(lián)合體是什么”吧!

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了萬源免費建站歡迎大家使用!

文/Edward

共用體又稱為聯(lián)合體,它是C語言中的一種特殊的數(shù)據(jù)類型。它允許用戶在相同的內(nèi)存位置存儲不同的數(shù)據(jù)類型。用戶可以定義一個帶有多成員的共用體,但是任何時候這些成員都共享同一塊內(nèi)存。舉個例子,共用體的存儲就好像是小孩子玩的太空沙,一塊太空沙它的大小是固定的,有且只有這么多,而共用體內(nèi)部的存儲就好像一個又一個模具,你可以將這塊太空沙分成兩塊放置到兩個小一點的小熊模具里面,它就變成了兩只小熊,也可以將它放到一塊大一點的老虎模具里面,它就變成了一只老虎。因此,共用體的本質(zhì)就是同一塊內(nèi)存的不同形式的訪問。
為了定義共用體,您必須使用 union 語句,方式與定義結(jié)構(gòu)類似。union 語句定義了一個新的數(shù)據(jù)類型,帶有多個成員。union 語句的格式如下:
union 共用體標(biāo)簽(可缺?。?/em>
{
      數(shù)據(jù)類型 成員變量1;
      數(shù)據(jù)類型 成員變量2;
      ……;
} 共用體變量1,共用體變量2……;
我們可以發(fā)現(xiàn),其實共用體定義時候的形式和結(jié)構(gòu)體如出一轍,只不過定義的關(guān)鍵詞不一樣。在定義時,共用體標(biāo)簽可以省略,聯(lián)合體內(nèi)部的成員變量數(shù)據(jù)類型是標(biāo)準(zhǔn)的變量定義,比如 int i; 或者 float f; 或者其他有效的變量定義,當(dāng)然也可以是結(jié)構(gòu)體。
下面我們定義一個名為 Data 的共用體類型,它有三個成員 i、f 和 str,定義如下:
union Data
{
   int i;
   float f;
   char  str[20];
} data;
現(xiàn)在,這個Data 類型的共用體可以存儲一個整數(shù)、一個浮點數(shù),或者一個字符串。這意味著一個變量(相同的內(nèi)存位置)可以存儲多個多種類型的數(shù)據(jù)。您可以根據(jù)需要在一個共用體內(nèi)使用任何內(nèi)置的或者用戶自定義的數(shù)據(jù)類型。Data共用體的內(nèi)存分別如圖1所示。
 C語言共用體聯(lián)合體是什么
圖1 共用體內(nèi)存存儲
共用體占用的內(nèi)存應(yīng)足夠存儲共用體中最大的成員。例如,在上面的實例中,Data 將占用 20 個字節(jié)的內(nèi)存空間,因為在各個成員中,字符串所占用的空間是最大的。
共用體內(nèi)部的成員變量訪問和結(jié)構(gòu)體一樣,用“共用體.成員名”即可。
下面的實例將顯示上面的共用體占用的總內(nèi)存大小,程序設(shè)計的思路為,我們?nèi)ザx一個共用體,在里面存入不同的長度的變量,最后用sizeof去測量共用體,看看最后程序的輸出,具體代碼如圖2所示。
C語言共用體聯(lián)合體是什么
圖2 測量共用體內(nèi)存大小
共用體說到底還是同一塊內(nèi)存空間的不同形式訪問,你可以將這塊內(nèi)存以int類型去訪問,也可以將這塊內(nèi)存以char數(shù)組的類型去訪問。我們可以通過一個例子來說明上述的論點。論證的過程很簡單,我們先定義一個共用體,在這個結(jié)構(gòu)體里面定義兩個變量,一個為“unsignedint”類型,一個為“char”類型數(shù)組。接著給unsigned int的變量賦值,最后將這兩個變量都打印出來。如圖3所示。
C語言共用體聯(lián)合體是什么
圖3 共用體同一塊內(nèi)存的不同形式訪問
我們之前說過,數(shù)組定義時,其內(nèi)部的元素地址都是向上增長的,因此我們對共同體中的數(shù)組賦值后,再用一個四字節(jié)的無符號整形變量去訪問,就可以得到組合到一起的數(shù)值了。
一般來說,小端模式(高字節(jié)存儲到高地址)的計算機會將高位地址的數(shù)組元素放在4字節(jié)無符號整數(shù)的高字節(jié),低地址的數(shù)組元素,放在4字節(jié)無符號整數(shù)的低字節(jié)。大端模式(高字節(jié)存儲到低地址)相反。利用這個原理,我們就可以判斷計算機存儲的大小端了。

到此,相信大家對“C語言共用體聯(lián)合體是什么”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


網(wǎng)頁題目:C語言共用體聯(lián)合體是什么
本文路徑:http://weahome.cn/article/ijodid.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部