久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

共用體union的妙用

作者:公平   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2014年03月14日   【字體:
結(jié)構(gòu)體struct是一個(gè)常用的數(shù)據(jù)類型,主要是將各種類型的數(shù)據(jù)打包成一個(gè)新的數(shù)據(jù)類型,在驅(qū)動(dòng)開發(fā),寄存器的定義等方面都有比較大的優(yōu)勢。在使用的過程中需要注意空結(jié)構(gòu)體的大小以及對齊(8字節(jié))對數(shù)據(jù)大小的影響。具體的應(yīng)用就不說了。另一個(gè)與struct非常相近的數(shù)據(jù)類型union則相對運(yùn)用的較少,但是如果理解了union的本質(zhì)就會(huì)發(fā)現(xiàn)該數(shù)據(jù)類型的好處。
union主要是將各種類型的數(shù)據(jù)存放在一段固定的存儲(chǔ)器中,存儲(chǔ)器的大小由union中需要最大存儲(chǔ)器的數(shù)據(jù)類型決定。比如:
union student
{
    char ***;
    int age;
    long number;
    double score;
};
其中l(wèi)ong、double需要16個(gè)字節(jié),而char 只需要1個(gè)字節(jié),因此該共用體占用16個(gè)字節(jié)。union的關(guān)鍵是不同的數(shù)據(jù)類型共用存儲(chǔ)器。

主要的運(yùn)用:
1、確定CPU的模式:大端、小端模式確定
大小端不同,則存儲(chǔ)的方式也存在差別,比如int需要4個(gè)字節(jié),而char只需要1個(gè)字節(jié),根據(jù)1個(gè)字節(jié)所在的具體位置即可判定CPU的模式
union TestCPU
{
     int i;
     char ch;
};
void testCPUMode(void)
{
    union TestCPU Test;
    Test.i = 1;
    if(Test.ch == 1)
    {
      //這個(gè)CPU是小端模式
    }
    else
    {
       //這種情況下就是大端模式
    }
}

2、實(shí)現(xiàn)不同數(shù)據(jù)之間的類型轉(zhuǎn)換
union Type
{
   int i;
   char ch;
   long lint;
   ....
};

...
union Type type;
這樣各種類型的數(shù)據(jù)共用存儲(chǔ)空間,很方便的實(shí)現(xiàn)了不同數(shù)據(jù)類型之間的轉(zhuǎn)換,不需要顯示的強(qiáng)制類型轉(zhuǎn)換。

union相比struct更加的節(jié)省空間。

3、寄存器的定義,實(shí)現(xiàn)整體的訪問和單項(xiàng)的訪問。
struct register
{char a;
char b;
char c;
char d;
};

union Register
{
   struct register;
   int whole;
};
這樣就能實(shí)現(xiàn)單項(xiàng)和整體的訪問,特別是引入位域操作等相關(guān)結(jié)構(gòu)以后,能夠?qū)崿F(xiàn)每一個(gè)bit的訪問。
其他的優(yōu)勢需要總結(jié),我暫時(shí)寫這三點(diǎn)了。
關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 天天操一操| 久久国产精品视频观看 | 日韩精品免费一区 | 毛片a区 | 三级黄色片在线观看 | 成人av网站在线观看 | 天天操夜夜操 | 成人亚洲精品 | 欧美a级成人淫片免费看 | 国产欧美一区二区三区久久 | 亚洲综合色网站 | 在线观看视频中文字幕 | 精品视频在线观看 | 国产在线精品一区二区 | 国产一伦一伦一伦 | 亚洲精品福利视频 | 久久久成人免费视频 | 欧美一区二区在线观看视频 | 久久午夜精品福利一区二区 | 亚洲综合色丁香婷婷六月图片 | 国产精品欧美一区二区三区不卡 | 国产偷久久一级精品60部 | 超碰人人做 | 久久精品久久久久久 | 午夜网| 成人在线网 | 一区二区精品 | 亚洲成人免费在线观看 | 国产成人精品久久二区二区91 | 精品一区二区久久久久久久网精 | 91伊人网 | 欧美一区二区大片 | 国产精品一区二区在线播放 | 亚洲成av人影片在线观看 | 亚洲在线 | 国产一级片在线播放 | 久久久精品视频一区二区三区 | 日韩免费一区二区 | caoporn国产精品免费公开 | 久久精品国产一区二区电影 | 看av网|