- 0
- 0
- 约小于1千字
- 约 1页
- 2026-02-03 发布于四川
- 举报
结构体是C语言中的一种常用的自定义数据结构。
看下面的例子:
1.#includestdio.h
2.
3.intmain(void)
4.{
5.structtest
6.{
7.inta;
8.charb;
9.}i;
10.printf(%d\n,sizeof(i));
11.}
按理说结构体变量i的大小应该是sizeof(int)+sizeof(char),即5,而输出显示的结果为8。再看一个例子:
1.#includestdio.h
2.
3.intmain(void)
4.{
5.structtest
6.{
7.inta;
8.charb,c;
9.}i;
10.printf(%d\n,sizeof(i));
11.}
应该是6对吧?结果还是8.这是为什么呢?
这是因为在32位的操作系统上,操作系统组织数据是以32位(4个字节)作为一个标准,因此各种变量的
size都一般都是4的倍数。而且结构体数据都是按照定义时所使用的顺序存放的,因此在第一个例子中尽
管b变量只会占有一个字节,但是a+b=54,因此第一个4个字节存放a,第二个4个字节用于存放
b,这样实际上就浪费了3个字节。在第二个例子中第二个4个字节用来存放b和c。
所以,在结构体中要注意结构体中的变量定义的顺序,不同的顺序可能会造成占用空间的不同。这在嵌入
式程序设计等系统资源比较少的情况下尤为重要。比如如下两种结构体:
1.#includestdio.h
您可能关注的文档
- 跨文化视角下人物相貌描述差异分析.pdf
- 精巧构思律动生命——<囚绿记>结构美探析.pdf
- 表情丰富脸:人物画技巧与实践.pdf
- 光色散与物体颜色物理原理及应用.pdf
- CCNA 200-题库:配置交换机远程访问命令集.pdf
- 2016年春季高考信息技术模拟及.pdf
- 植物细胞工程与克隆技术巩固练习.pdf
- 安卓应用通信数据协议B:概述与详细说明.pdf
- 合成氨灰水处理系统流程与问题探讨.pdf
- 会计基础习题:第四章会计记账方法与试算平衡.pdf
- 伟明环保-市场前景及投资研究报告-境内业务稳健运行,印尼市场贡献边际增量.pdf
- 桂东县法院系统招聘考试真题2025.pdf
- 贵州省黔南布依族2026年中考三模物理试题及答案.pdf
- 贵州省黔南州2026年中考语文二模试卷附答案.pdf
- 贵州省铜仁市2026年中考语文二模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套完整答案详解.docx
- 贵州省毕节市2026年中考语文一模试卷附答案.pdf
- 贵州省贵阳市南明区2026年中考语文一模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套参考答案详解.docx
- 贵州省贵阳市白云区2026年中考二模物理试题附答案.pdf
原创力文档

文档评论(0)