| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 354 人关注过本帖
标题:关于sizeof()一个简单的问题
只看楼主 加入收藏
stevewang
Rank: 2
来 自:中国四川
等 级:论坛游民
帖 子:17
专家分:33
注 册:2012-2-17
结帖率:66.67%
收藏
已结贴  问题点数:3 回复次数:6 
关于sizeof()一个简单的问题
typedef struct temp {
    char char1;
    char char2;
    int n1;
}sizeTemp;

int main () {
    printf("%lu", sizeof(sizeTemp));
    return 0;
}

请问打印结果是多少?为什么?

期待那位高人指点
搜索更多相关主题的帖子: 打印 return 
2012-04-06 11:06
dingmingyao
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-4-7
收藏
得分:0 
8;   请查看字节对齐解释
2012-04-06 11:33
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:1 
看是几个字节对齐了,如果4字节对齐答案是8,因为两个char型占两个字节,后面补全两个字节,int再占4个字节,总共8个字节

总有那身价贱的人给作业贴回复完整的代码
2012-04-06 11:42
upsate
Rank: 2
等 级:论坛游民
帖 子:14
专家分:21
注 册:2011-12-26
收藏
得分:1 
8
计算机对内存管理是以“字”为单位,(大部分系统默认四字节为一个“字”)。如果在一个“字”中只存放一个字符,虽然只占一个字节,但该“字”的其他三个字节不会存放数据,而会从下一个“字”开始存放数据。sizeof()运算符测长度时,得到的不是理论值,而是实际值,必然是四的倍数。(谭浩强《c程序设计》(第四版)第295页注释)。
我用的是VS2010,vc6.0编译成功,链接失败。
可能和系统有关,结果可以是1,2,3,但结果必然是结构体内最小变量长度的倍数。

2012-04-06 11:54
stevewang
Rank: 2
来 自:中国四川
等 级:论坛游民
帖 子:17
专家分:33
注 册:2012-2-17
收藏
得分:0 
结构体的字节对齐准则是:成员中自身对其值最大的那个值。
为什么以下2个结构体的大小不一样,输出结果为12和8.(我的编译环境为XCode4.3)求详解啊
#include <stdio.h>

typedef struct A {
    char i;
    int n;
    short s;
}A;

typedef struct B {
    int n;
    char i;
    short s;
}B;

int main(int argc, const char * argv[])
{
    printf("%lu\n", sizeof(A));
    printf("%lu", sizeof(B));
    return 0;
}
2012-04-06 13:41
yhmm
Rank: 2
等 级:论坛游民
帖 子:22
专家分:72
注 册:2012-2-27
收藏
得分:0 
打印结果麻 是这个 typedef struct temp {
    char char1;
    char char2;
    int n1;
}sizeTemp;

int main () {
    printf("%lu", sizeof(sizeTemp));
    return 0;
}

                      捷建软件开发互助平台
2012-04-07 12:14
yhmm
Rank: 2
等 级:论坛游民
帖 子:22
专家分:72
注 册:2012-2-27
收藏
得分:1 
前两个char各占一个字节,
n1占四个字节
但是因为数据对齐,所以在两个char之后需要空2字节

                      捷建软件开发互助平台
2012-04-07 12:15
快速回复:关于sizeof()一个简单的问题
数据加载中...
 
   



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

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