标签:aa 字节 int 占用 struct 内存空间 char 搞懂 一文
一、首先做一道例题感受一下
请问下面定义的结构体变量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
标签:aa,字节,int,占用,struct,内存空间,char,搞懂,一文 来源: https://blog.csdn.net/qq_34771124/article/details/121959579
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。