struct A {
char a;
char b;
char c;
};
A的大小为何事3啊,(32位机器),第一个char应该会分配4字节的空间,后面b,c再填在a后面,cpu取的时候应该是4啊
C里面结构体大小的问题,一般考虑几个补齐就行。
首先,每个成员的开始位置和自己的大小对齐,char的话因为是1,所以不用考虑。最后,整个结构体的大小和结构体中的占用位数最大的成员对齐。
如果说你这个结构体是
struct A {
char a;
int b;
char c;
};
那么第一个成员a就占用四个字节:char实际占一个,为了满足b的对齐条件(int占4个字节),在a后面补上三个字节。
跟cpu一次取多少数据无关。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。