c++ 结构体大小
#include<iostream>
using namespace std;
int main(){
struct {
char firstname[25];
char mi;
char lastname[25];
int score;
}A;
cout << sizeof(A) << endl;
return 0;
}
为什么是56呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
百度:c++结构体 对齐
参考:
http://www.cnblogs.com/moondark/archive/2012/03/08/2383491.html
一个变量的地址必须是其自身长度的整数倍。
firstname,mi和lastname都是char类型,一共占用51个字节,即偏移地址为0~50;
接下来是一个int,int是4字节,其偏移地址必须为4的整数倍,所以偏移地址为52~55(52是第一个大于50的能被4整除的数字);
至于中间的第51这个字节,就是俗称的padding,是个浪费掉的填充字节;
所以整个结构体占用的地址为0~55,共56个字节
结构体对齐,但是一般都比较容易理解!