機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
學(xué)C51的基礎(chǔ) 10《 聯(lián) 合(union) 》作者[cmh]©
學(xué)C51的基礎(chǔ) 10《 聯(lián) 合(union) 》作者[cmh]©
 更新時(shí)間:2008-8-17 16:34:08  點(diǎn)擊數(shù):42
【字體: 字體顏色
聯(lián)     合(union)
    1. 聯(lián)合說明和聯(lián)合變量定義
    聯(lián)合也是一種新的數(shù)據(jù)類型, 它是一種特殊形式的變量。
    聯(lián)合說明和聯(lián)合變量定義與結(jié)構(gòu)十分相似。其形式為:
     union 聯(lián)合名{
          數(shù)據(jù)類型 成員名;
          數(shù)據(jù)類型 成員名;
          ...
     } 聯(lián)合變量名;
    聯(lián)合表示幾個(gè)變量公用一個(gè)內(nèi)存位置, 在不同的時(shí)間保存不同的數(shù)據(jù)類型和不同長度的變量。
    下例表示說明一個(gè)聯(lián)合a_bc:
     union a_bc{
          int i;
          char mm;
     };
    再用已說明的聯(lián)合可定義聯(lián)合變量。例如用上面說明的聯(lián)合定義一個(gè)名為lgc的聯(lián)合變量, 可寫成:

      union a_bc lgc;

    在聯(lián)合變量lgc中, 整型量i和字符mm公用同一內(nèi)存位置。
    當(dāng)一個(gè)聯(lián)合被說明時(shí), 編譯程序自動(dòng)地產(chǎn)生一個(gè)變量, 其長度為聯(lián)合中最大的變量長度。
    聯(lián)合訪問其成員的方法與結(jié)構(gòu)相同。同樣聯(lián)合變量也可以定義成數(shù)組或指針,但定義為指針時(shí), 也要用"->"符號(hào), 此時(shí)聯(lián)合訪問
成員可表示成:

     聯(lián)合名->成員名

    另外, 聯(lián)合既可以出現(xiàn)在結(jié)構(gòu)內(nèi), 它的成員也可以是結(jié)構(gòu)。
    例如:
     struct{
          int age;
          char *addr;
          union{
               int i;
               char *ch;
          }x;
     }y[10];

    若要訪問結(jié)構(gòu)變量y[1]中聯(lián)合x的成員i, 可以寫成:

      y[1].x.i;

    若要訪問結(jié)構(gòu)變量y[2]中聯(lián)合x的字符串指針ch的第一個(gè)字符可寫成:

      *y[2].x.ch;

    若寫成"y[2].x.*ch;"是錯(cuò)誤的。

    2. 結(jié)構(gòu)和聯(lián)合的區(qū)別
    結(jié)構(gòu)和聯(lián)合有下列區(qū)別:
    1. 結(jié)構(gòu)和聯(lián)合都是由多個(gè)不同的數(shù)據(jù)類型成員組成, 但在任何同一時(shí)刻, 聯(lián)合中只存放了一個(gè)被選中的成員, 而結(jié)構(gòu)的所有成
員都存在。
    2. 對于聯(lián)合的不同成員賦值, 將會(huì)對其它成員重寫, 原來成員的值就不存在了, 而對于結(jié)構(gòu)的不同成員賦值是互不影響的。
    下面舉一個(gè)例了來加對深聯(lián)合的理解。
    例4:

     main()
     {
          union{                   /*定義一個(gè)聯(lián)合*/
               int i;
               struct{             /*在聯(lián)合中定義一個(gè)結(jié)構(gòu)*/
                    char first;
[1] [2] [3] [4] [5] [6] [7]  下一頁
  • 上一篇: C51 怎樣將1個(gè)子程序段定位在1個(gè)固定的地址位置?
  • 下一篇: 學(xué)C51的基礎(chǔ) 9 《 指針、結(jié)構(gòu)、聯(lián)合和枚舉 》 作者[cmh]©
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1