c语言结构体与共同体的问题

设有以下结构类型说明和变量定义,则变量a在内存所占字节数是多少——————。structstud{charnum[6];ints[4];doubleave;}a,*p;希... 设有以下结构类型说明和变量定义,则变量a在内存所占字节数是多少——————。
struct stud
{ char num[6];
int s[4];
double ave;
}a,*p;

希望有详细过程
展开
 我来答
S0746
2008-08-26 · TA获得超过118个赞
知道答主
回答量:125
采纳率:0%
帮助的人:49.8万
展开全部
首先跟你说一下字节对齐的问题。

一般为4,具体依编译器而定

字节对齐:
1。一个占N 个字节的变量,存储在首地址偏移量为N的n倍的地址上、
2。结构体变量占的总内存大小等于它的成员的数据类型最大的n倍

字节对齐主要是为了计算机能够迅速地访问

我用的vc6.0给你分析
struct stud
{ char num[6]; // 6
int s[4]; // 16
double ave; // 8
}a,*p;

在存储int s[4]; 时,s[0]要存储在偏移量为4的倍数上,因此在存s[0]时要在num[5]后填充2个字节。
struct stud
{ char num[6]; // 6 + 2
int s[4]; // (6 + 2)+ 16
double ave; // 8
}a,*p;

在存储完s[3]后存 ave ,此时开始存储数组时的偏移量为(6 + 2)+ 16,为8(double占8字节)的倍数,所以不用填充字符。

struct stud
{ char num[6]; // 6 + 2
int s[4]; // (6 + 2)+ 16
double ave; // ((6 + 2)+ 16) + 8
}a,*p;

此时算一下a的大小为32 ,确实为8的倍数,ave后不用填充字符,所以最后a 的大小为32。

如果你用的TC编译器,int 应为2 ,double应为4,最后结果应为20(int, double占多大内存我也不确定了)
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
百度网友b91c2e1d2
2008-08-27 · TA获得超过299个赞
知道答主
回答量:176
采纳率:0%
帮助的人:0
展开全部
struct stud
{ char num[6]; //6*1=6(字符数组,每个元素占1个字节)
int s[4]; //4*2=8 (Turbo C int 类型占两个字节)
double ave; //8 (double型变量占8个字节)
}a,*p; //a 共占内存字节数为 22
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
霜皛06d
2008-08-26 · TA获得超过1204个赞
知道小有建树答主
回答量:707
采纳率:33%
帮助的人:509万
展开全部
结构体 是所有的里面的类型的变量 都占内存
共同体 是所有里面类型的变量 只算占有最大内存的那个

7个char+5个int+1个double
下面我记得不太清楚 你可以翻翻书
char 是1个字节
int 0.5字节
double 2个字节
所以答案=》 7+2.5+2=11.5
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shidingneng
2008-08-26 · TA获得超过716个赞
知道答主
回答量:162
采纳率:0%
帮助的人:159万
展开全部
在结构体中:
为所有变量所占字节和的总数;

在联合体中:
为所定义变量中最长的那一个类型所占的字节数;

具本变量类型依不同软硬件环境有所不同;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9a9db8c
2008-08-28
知道答主
回答量:5
采纳率:0%
帮助的人:0
展开全部
windows下
char 1byte
int 2byte
double 8byte
所以
a 1*6+2*4+8= 22

linux下
char 1byte
int 4byte
double 16byte
所以
a 1*6+4*4+16=38
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式