C++中2道结构方面选择题,详细解释一下 当定义一个结构体变量时,系统为它分配的内存空间是
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++中2道结构方面选择题,详细解释一下 当定义一个结构体变量时,系统为它分配的内存空间是相关的知识,希望对你有一定的参考价值。
分配的内存空间为 12
32位且4字节对齐时占用的字节数为12字节。
16位2字节对齐时占用的字节数为6字节。源代码如下:
#include<stdio.h> struct s int a; char b; float c;; void main() printf("%d\\n",sizeof(struct s));运行结果如下
扩展资料:
结构体的内存空间对齐规则
1、数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方。以后每个数据成员的对齐按照#pragma pack指定的数值和这个数据成员自身长度中,比较小的那个进行。
2、结构(或联合)的整体对齐规则:在数据成员完成各自对齐之后,结构(或联合)本身也要进行对齐,对齐将按照#pragma pack指定的数值和结构(或联合)最大数据成员长度中,比较小的那个进行。
3、结合1、2可推断:当#pragma pack的n值等于或超过所有数据成员长度的时候,这个n值的大小将不产生任何效果。
参考资料来源:百度百科-结构体
参考技术A #include<stdio.h>struct s
int a;
char b;
float c;
;
void main()
printf("%d\\n",sizeof(struct s));
12
Press any key to continue
严谨的说这题都不对
32位且4字节对齐时时12
16位2字节对齐时时6
至于结构体变量所占大小
这个问题不是简单的int 4 + char 1 + float 4 = 9 这么算的(除非是设置了1字节对齐)
是按最大元素的倍数凑整的 参考技术B 可以把结构体理解为一个特殊的数组,可以把任意类型的数据放在一起。每种类型的数据都是真实存在于内存中的。所以,为了存储这些数据,必须为每种类型都分配内存空间。而一个结构体的内存空间就为它包含的所有成员的内存之和。。追问
谢谢,还有第一题,怎么得出的?
本回答被提问者采纳 参考技术C 结构体是线性顺序保存的一组数据,占用结构体内所有元素所需储存空间的总和。以上是关于C++中2道结构方面选择题,详细解释一下 当定义一个结构体变量时,系统为它分配的内存空间是的主要内容,如果未能解决你的问题,请参考以下文章
这是用埃拉托色尼筛选法筛选2~1000的素数的C++程序,能否详细解释一下每个步骤的意思