一个小程序,谁能告诉我为什么呢??

yhwxxx 2007-08-22 06:45:17
下面代码中的结构体的字节数好像怎么都不对,不知道怎么回事。

#include <iostream>
using namespace std;
struct ABC
{
int a;
short int b;
short int c;
char ch;


}ABC;
int main()
{
ABC.a=1;
ABC.b=2;
ABC.ch='a';
ABC.c=3;
cout<<sizeof(ABC.a)<<endl;
cout<<sizeof(ABC.b)<<endl;
cout<<sizeof(ABC.c)<<endl;
cout<<sizeof(ABC.ch)<<endl;
cout<<"sizeof(ABC) is :"<<sizeof(ABC)<<endl;
return 0;
}
...全文
76 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
scrutin 2007-08-22
  • 打赏
  • 举报
回复
楼主应该去google搜索一下 “字节对齐”
看几分钟就搞懂了
free_job 2007-08-22
  • 打赏
  • 举报
回复
呵呵,你自己明白了,我多此一举了
free_job 2007-08-22
  • 打赏
  • 举报
回复
你这个结构在32位系统下应该是占12个字节,
int a --4个字节
short int b short int c 组成4个字节
char ch; 4个字节
楼上的正解,就是字节对齐问题
yhwxxx 2007-08-22
  • 打赏
  • 举报
回复
o ,thx!

对于下面的结构体
struct test
{
char x1;
short x2;
float x3;
char x4;
};
结构各成员空间分配情况是怎样的?
文章中解释:
结构的第一个成员x1,其偏移地址为0,占据了第1个字节。第二个成员x2为short类型,其起始地址必须2字节对界,因此,编译器在x2和x1之间填充了一个空字节。结构的第三个成员x3和第四个成员x4恰好落在其自然对界地址上,在它们前面不需要额外的填充字节。在 test结构中,成员x3要求4字节对界,是该结构所有成员中要求的最大对界单元,因而test结构的自然对界条件为4字节,编译器在成员x4后面填充了 3个空字节。整个结构所占据空间为12字节。
gfxiang 2007-08-22
  • 打赏
  • 举报
回复
编译器考虑了对齐,所以sizeof(ABC)不等于各个成员大小之和
项目资源包含:可运行源码+sql文件+文档; python3.8+django+hive+echarts+mysql5.7+vue 适用人群:学习不同技术领域的小白或进阶学习者;可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 平台采用先进的技术架构,前端运用ECharts丰富的图表类型,如折线图、柱状图、热力图等,将温度、盐度、风速、海浪高度等海洋气象数据以直观、动态的形式展现,使用户能够快速洞察数据变化趋势。在功能设计上,平台不仅具备基本的数据展示功能,还融入了数据分析与预测模块。通过对历史数据的深度挖掘与分析,结合专业算法模型,实现对未来海洋气象状况的预测,为海洋渔业、航运、海洋工程等行业提供决策依据。 先规划界面布局与功能模块,如数据管理、用户管理等;再利用ECharts配置图表展示关键数据;最后通过前后端交互,实现管理员对平台各项功能的管理操作。 先设计首页布局,划分不同数据展示区域,如海洋温度、风速等板块。接着后端准备相关数据接口,确保能按需提供海洋气象数据。前端通过Ajax请求获取数据后,利用ECharts将数据渲染为直观图表,如折线图、柱状图等,最后完成页面样式优化与交互逻辑设置。 首先明确分析目标,确定是研究海洋温度变化还是风速分布等。接着从数据库获取相关海洋气象数据,进行数据清洗、转换等预处理。然后依据分析需求选择合适算法,如时间序列分析、空间插值算法等,对数据进行深度挖掘。最后利用ECharts强大的可视化能力,将分析结果以直观的图表形式呈现,如折线图展示温度变化趋势、热力图呈现风速分布,便于用户快速理解数据内涵。

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧