|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 求c语言结构体大小,编程输出的和计算不一样...求大神帮忙讲解一下啊?谢谢~~
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
2924
人关注过本帖
标题:
求c语言结构体大小,编程输出的和计算不一样...求大神帮忙讲解一下啊?谢谢 ...
只看楼主
加入收藏
境善
等 级:
论坛游民
帖 子:76
专家分:16
注 册:2012-10-29
结帖率:
86.21%
楼主
收藏
已结贴
√
问题点数:2 回复次数:7
求c语言结构体大小,编程输出的和计算不一样...求大神帮忙讲解一下啊?谢谢~~
以下结构体stu5,我计算的是16,但是代码输出的是20。。。为什么啊?
struct stu5
{
char i;
struct
{
char c;
int j;
} ss;
char a;
char b;
char d;
char e;
char f;
} stu5;
搜索更多相关主题的帖子:
结构体
c语言
2016-01-29 21:42
举报帖子
使用道具
赠送鲜花
luoye1994
等 级:
论坛游民
帖 子:57
专家分:58
注 册:2015-6-29
第
2
楼
收藏
得分:1
你只有结构体,跟你的计算过程没有关系!具体点可以互助
2016-01-29 23:24
举报帖子
使用道具
赠送鲜花
境善
等 级:
论坛游民
帖 子:76
专家分:16
注 册:2012-10-29
第
3
楼
收藏
得分:0
回复 2楼 luoye1994
就是printf("%d",sizeof(stu5));啊。。
2016-01-30 22:52
举报帖子
使用道具
赠送鲜花
拉链
等 级:
黑侠
帖 子:107
专家分:534
注 册:2016-1-22
第
4
楼
收藏
得分:0
不知道你怎么算出的16个字节。
按char占1个、int占4个计算,应该是11个字节,之所以实际占20个字节,我觉得是内存对齐的需要。由于使用了结构体嵌套,将结构体内的变量分成3段,每段都需要内存对齐,即每段内存必须是4的倍数,第一段是char i,虽然只需要1个字节,但实际占4字节;第二段是char 出,int j,虽只需要5字节,但占8字节,具体应该是char c占4个,可以用&stu5.ss.j-&stu5.ss.c=4验证;第三段是char a至char f,虽只需要5个,但必须占8个才能保证对齐,具体应该是f占4个,这样这个结构体实际占用空间为4+8+8=20。
2016-01-31 01:16
举报帖子
使用道具
赠送鲜花
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
5
楼
收藏
得分:1
任何時候都不要自己去算結構的尺寸,在代碼中也不要假定你知道那些細節,這跟未定義行爲是一樣的性質。
授人以渔,不授人以鱼。
2016-01-31 20:20
举报帖子
使用道具
赠送鲜花
拉链
等 级:
黑侠
帖 子:107
专家分:534
注 册:2016-1-22
第
6
楼
收藏
得分:1
回复 5楼 TonyDeng
版主说的是!
自己写肯定不需要关心这些,不过结构体可以当一条记录直接存到文件,当存在兼容问题时,还是要关心结构体元素具体位置的,比如bmp文件头,就是一个结构体,许多人解析时不会再使用原定义的结构体了,都是缓存到内存,用指针来访问,好在bmp文件头都指明了各元素相对位置,如未指明,你就必须分析结构体各元素位置了,还只能按16位编译器的规则分析。
2016-02-01 08:48
举报帖子
使用道具
赠送鲜花
rjsp
等 级:
版主
威 望:
528
帖 子:9031
专家分:54061
注 册:2011-1-18
第
7
楼
收藏
得分:1
回复 6楼 拉链
自己指定对齐方式
2016-02-01 09:51
举报帖子
使用道具
赠送鲜花
境善
等 级:
论坛游民
帖 子:76
专家分:16
注 册:2012-10-29
第
8
楼
收藏
得分:0
回复 4楼 拉链
第一个char为什么是4个字节呢,应该是偏移量0+自身字节1,应该是1啊。。
2016-02-26 15:03
举报帖子
使用道具
赠送鲜花
8
1/1页
1
快速回复:
求c语言结构体大小,编程输出的和计算不一样...求大神帮忙讲解一下啊? ...
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.028571 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved