簡體   English   中英

sizeof和unsigned char數組錯誤? (c / c ++)

[英]sizeof and unsigned char array error? (c/c++)

我寫了這個結構:

struct bmpheader {
    unsigned char magic[2];
    unsigned int fsize;
    unsigned int unused;
    unsigned int pixdata_offset;
    unsigned int headersize;
    unsigned int width;
    unsigned int height;
    unsigned short planes_color;
    unsigned short bpp;
    unsigned int compression;
    unsigned int sizeofpix;
    unsigned int resolutionx;
    unsigned int resolutiony;
    unsigned int colors;
    unsigned int imp_colors;
};

而且我對sizeof函數有問題。 當我指望我的手指時,它對我來說每次都是54個字節。 sizeof函數每次都會給我56。為什么? 問題是無符號字符數組,當我刪除magic [2]數組時,sizeof是52? sizeof(header.magic)顯示為2。據我所知,unsigned char是1字節類型?

預先感謝您的回復。

馬辛

因為(在您的計算機上)一個int必須放在4字節地址上,或者在放在4字節地址上時效率更高。 編譯器將在char數組之后插入兩個填充字節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM