C++中2道结构方面选择题,详细解释一下 当定义一个结构体变量时,系统为它分配的内存空间是

 我来答
百度网友bbe3b5a
2019-07-20 · TA获得超过1116个赞
知道答主
回答量:16
采纳率:0%
帮助的人:4286
展开全部

分配的内存空间为 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值的大小将不产生任何效果。

参考资料来源:百度百科-结构体

沧海雄风2009
推荐于2018-02-27 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8525
采纳率:79%
帮助的人:2749万
展开全部
#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字节对齐)

是按最大元素的倍数凑整的
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2015-03-22
展开全部
可以把结构体理解为一个特殊的数组,可以把任意类型的数据放在一起。每种类型的数据都是真实存在于内存中的。所以,为了存储这些数据,必须为每种类型都分配内存空间。而一个结构体的内存空间就为它包含的所有成员的内存之和。。
追问
谢谢,还有第一题,怎么得出的?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
0016676565
2015-03-22 · TA获得超过100个赞
知道小有建树答主
回答量:125
采纳率:0%
帮助的人:83.8万
展开全部
结构体是线性顺序保存的一组数据,占用结构体内所有元素所需储存空间的总和。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式