c++ 结构体大小
迷茫
迷茫 2017-04-17 11:57:21
[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呢?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(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个字节

高洛峰

结构体对齐,但是一般都比较容易理解!

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号