#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呢?
#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呢?
一个变量的地址必须是其自身长度的整数倍。
firstname,mi和lastname都是char类型,一共占用51个字节,即偏移地址为0~50;
接下来是一个int,int是4字节,其偏移地址必须为4的整数倍,所以偏移地址为52~55(52是第一个大于50的能被4整除的数字);
至于中间的第51这个字节,就是俗称的padding,是个浪费掉的填充字节;
所以整个结构体占用的地址为0~55,共56个字节
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
百度:c++结构体 对齐
参考:
http://www.cnblogs.com/moondark/archive/2012/03/08/2383491.html