#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呢?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
百度: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个字节
结构体对齐,但是一般都比较容易理解!