开发者社区> 问答> 正文

sizeof一个结构体的大小

struct A {
char a;
char b;
char c;
};

A的大小为何事3啊,(32位机器),第一个char应该会分配4字节的空间,后面b,c再填在a后面,cpu取的时候应该是4啊

展开
收起
a123456678 2016-06-08 16:02:20 2179 0
1 条回答
写回答
取消 提交回答
  • C里面结构体大小的问题,一般考虑几个补齐就行。
    首先,每个成员的开始位置和自己的大小对齐,char的话因为是1,所以不用考虑。最后,整个结构体的大小和结构体中的占用位数最大的成员对齐。
    如果说你这个结构体是

    struct A {
        char a;
        int b;
        char c;
    };

    那么第一个成员a就占用四个字节:char实际占一个,为了满足b的对齐条件(int占4个字节),在a后面补上三个字节。
    跟cpu一次取多少数据无关。

    2019-07-17 19:32:11
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载