| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 809 人关注过本帖
标题:结构体所占字节的问题
只看楼主 加入收藏
编程小猪
Rank: 1
等 级:新手上路
帖 子:33
专家分:4
注 册:2022-10-17
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
结构体所占字节的问题
#include <stdio.h>

int main()
{
   struct cat
    {
        int a[10];
        char ch;
        float f;
        double *p;
    } cat1;
    printf("%d",sizeof(cat1));
   
   return 0;
}
为什么我算出来是33,编译器是56,答案确是27?为什么double *p会是占2个字节?请各位大佬不吝赐教!!
搜索更多相关主题的帖子: 字节 结构体 int double 不吝 
2023-02-24 16:26
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:20 
int的长度是实现定义的,结构体的对齐排布也是实现定义的,所以不可能有什么标准答案

假如是 LLP64 数据模型(VC x64),那 10*4 + 4 + 4 + 8 = 56
假如是 ILP32 数据模型(VC x86),那 10*4 + 4 + 4 + 4 = 52

假如用的是古老16位计算机,且未作变量对齐,那有可能真的是 10*2 + 1 + 4 + 2 = 27
2023-02-24 16:54
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
结构的内存占用根据编译器不同而有所不同,这是没有标准答案的。
当然如果你的目的是考试的话,那就死记硬背答案吧。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2023-02-24 18:39
pvm2000
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:180
专家分:312
注 册:2022-12-22
收藏
得分:0 
sizeof最准确
2023-02-25 00:25
编程小猪
Rank: 1
等 级:新手上路
帖 子:33
专家分:4
注 册:2022-10-17
收藏
得分:0 
回复 2楼 rjsp
懂了,不纠结这个题目了,谢谢大佬

专升本备考中!!!
2023-02-25 14:23
编程小猪
Rank: 1
等 级:新手上路
帖 子:33
专家分:4
注 册:2022-10-17
收藏
得分:0 
回复 4楼 pvm2000
用了sizeof()的,int类型是4个字节

专升本备考中!!!
2023-02-25 14:24
编程小猪
Rank: 1
等 级:新手上路
帖 子:33
专家分:4
注 册:2022-10-17
收藏
得分:0 
回复 3楼 renkejun1942
哈哈哈,但愿4月份专升本不要出这种题目

专升本备考中!!!
2023-02-25 14:24
快速回复:结构体所占字节的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024022 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved