繁体   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