一文搞懂结构体变量占用多大内存空间(详细)
2021/12/16 7:11:52
本文主要是介绍一文搞懂结构体变量占用多大内存空间(详细),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、首先做一道例题感受一下
请问下面定义的结构体变量aa在计算机内存中占用多少字节?
#include main() { struct student { float height; short int age ; char sex ; }aa; printf("%d\n",sizeof(aa)); //屏幕上将显示多少? }
错误解答:我们都知道,char类型占用1个字节,float型占用4个字节,short int类型占用2个字节,int型在VC6.0中占用4个字节(TC2.0中占用2个字节),long占用8个字节,double占用8个字节。因此,我们可能会犯一个错误就是直接4+2+1=7,结构体aa占用7个字节。这是错的。
错误分析:计算结构体大小时需要考虑其内存布局,编译系统为了提高计算机访问数据的效率,在安排结构体每个成员的时候采用了内存对齐的方法,具体是:结构体在内存中的存放按单元进行存放,每个单元的大小取决于结构体中最大基本类型的大小。
二、为解释清楚,我们列出以下几种格式
格式一: struct tagPhone{ char A; int B; short C; }Phone1; 格式二: struct tagPhone{ char A; short C; int B; }Phone2; 格式三: struct tagPhone3{ char A; char B[2]; char C[4]; }Phone3; 格式四: struct tagPhone3{ char A; double B[2]; char C[4]; }Phone4;
然后我们一一分析
综上所述,作为一个优秀的程序员,有必要在声明结构体变量时考虑如何才能节省空间,因为这之间的差异是非常大的。
原文链接:http://blog.sina.com.cn/s/blog_75a2ecd20102xca0.html
这篇关于一文搞懂结构体变量占用多大内存空间(详细)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现