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道结构方面选择题,详细解释一下 当定义一个结构体变量时,系统为它分配的内存空间是的主要内容,如果未能解决你的问题,请参考以下文章

求C++中auto型的详细解释

这是用埃拉托色尼筛选法筛选2~1000的素数的C++程序,能否详细解释一下每个步骤的意思

C++中啥是容器?可不可以具体解释一下

使用 C 或 C++ 的数据结构?

java方面 是个打印菱形的程序,本人是新手不太理解,求高手注释,详细解释一下,谢了!

解释一下,在你往浏览器中输入一个URL后都发生了什么,要尽可能详细(转)