關(guān)于位域在結(jié)構(gòu)體的應(yīng)用

關(guān)于位域在結(jié)構(gòu)體的應(yīng)用主要要注意內(nèi)存對齊規(guī)則的理解和空域的理解
使用位域的主要目的是壓縮存儲,其大致規(guī)則為:
1)如果相鄰位域字段的類型相同,且其位寬之和小于類型的sizeof大小,則后面的字段將緊鄰前一個字段存儲,直到不能容納為止;
2)如果相鄰位域字段的類型相同,但其位寬之和大于類型的sizeof大小,則后面的字段將從新的存儲單元開始,其偏移量為其類型大小的整數(shù)倍;
3)如果相鄰的位域字段的類型不同,則各編譯器的具體實(shí)現(xiàn)有差異,VC6采取不壓縮方式,Dev-C++采取壓縮方式;
4)如果位域字段之間穿插著非位域字段,則不進(jìn)行壓縮;
5)整個結(jié)構(gòu)體的總大小為最寬基本類型成員大小的整數(shù)倍。
例如:

你所需要的網(wǎng)站建設(shè)服務(wù),我們均能行業(yè)靠前的水平為你提供.標(biāo)準(zhǔn)是產(chǎn)品質(zhì)量的保證,主要從事成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、企業(yè)網(wǎng)站建設(shè)、成都手機(jī)網(wǎng)站制作、網(wǎng)頁設(shè)計、品牌網(wǎng)站設(shè)計、網(wǎng)頁制作、做網(wǎng)站、建網(wǎng)站。創(chuàng)新互聯(lián)建站擁有實(shí)力堅強(qiáng)的技術(shù)研發(fā)團(tuán)隊(duì)及素養(yǎng)的視覺設(shè)計專才。

#include <stdio.h>
int main()
{
    union
    {
        struct
        {
            unsigned short s1:3;
            unsigned short s2:3;
            unsigned short s3:3;
        }x;
        char c;
    }v;
    v.c=100;
    printf("sizeof(v)=%d\n",sizeof(v));
    printf("s1=%d\n",v.x.s1);
    printf("s2=%d\n",v.x.s2);
    printf("s3=%d\n",v.x.s3);
    return 0;
}

分析:100的二進(jìn)制:0110 0100,結(jié)構(gòu)體中s1,s2,s3共9位,則占用2直接,故sizeof(v)=2;對應(yīng)的s1三位二進(jìn)制100,s1=4;s2三位二進(jìn)制100,s2=4;s3三位二進(jìn)制001,s3=1。

結(jié)果:

關(guān)于位域在結(jié)構(gòu)體的應(yīng)用

再例如:

#include <stdio.h>
int main()
{
    union
    {
        struct
        {
            unsigned short s1:3;
            unsigned short s2:3;
            unsigned short s3:3;
            unsigned short s4:7;
        }x;
        char c;
    }v;
    v.c=100;
    printf("sizeof(v)=%d\n",sizeof(v));
    printf("s1=%d\n",v.x.s1);
    printf("s2=%d\n",v.x.s2);
    printf("s3=%d\n",v.x.s3);
    printf("s4=%d\n",v.x.s4);
    return 0;
}

結(jié)果:

關(guān)于位域在結(jié)構(gòu)體的應(yīng)用

當(dāng)前名稱:關(guān)于位域在結(jié)構(gòu)體的應(yīng)用
當(dāng)前路徑:http://bm7419.com/article30/ipojso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、全網(wǎng)營銷推廣微信公眾號、網(wǎng)站設(shè)計、外貿(mào)網(wǎng)站建設(shè)面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)