C++中2道结构方面选择题,详细解释一下 当定义一个结构体变量时,系统为它分配的内存空间是
4个回答
展开全部
分配的内存空间为 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值的大小将不产生任何效果。
参考资料来源:百度百科-结构体
展开全部
#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
展开全部
可以把结构体理解为一个特殊的数组,可以把任意类型的数据放在一起。每种类型的数据都是真实存在于内存中的。所以,为了存储这些数据,必须为每种类型都分配内存空间。而一个结构体的内存空间就为它包含的所有成员的内存之和。。
追问
谢谢,还有第一题,怎么得出的?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
结构体是线性顺序保存的一组数据,占用结构体内所有元素所需储存空间的总和。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询