标题:这个结构类型占几个字节?
取消只看楼主
醉游人
Rank: 2
等 级:论坛游民
帖 子:15
专家分:10
注 册:2017-6-4
结帖率:75%
已结贴  问题点数:10 回复次数:3 
这个结构类型占几个字节?
定义了struct Student这样一个结构,运行后为什么 sizeof(student[0])=32 呢。
每个成员变量大大小是20/4/1/4个字节,加起来不应该是29个字节吗?


程序代码:
#include <stdio.h>

int main()
{
    struct Student
    {
        char cName[20];
        int iNumber;
        char cSex;
        int iGrade;
    };
    
    struct Student student[5]=
    {
        {"Wangjiasheng",12062212,'M',3},
        {"YuLongjiao",12062213,'W',3},
        {"JiangXuehuan",12062214,'W',3},
        {"ZhangMeng",12062215,'W',3},
        {"HanLiang",12062216,'M',3},
    };
    
    printf("sizeof(student[0])=%d\n",sizeof(student[0]));
    
    return 0;

 } 
搜索更多相关主题的帖子: 结构 类型 字节 Student sizeof 
2017-07-04 22:52
醉游人
Rank: 2
等 级:论坛游民
帖 子:15
专家分:10
注 册:2017-6-4
得分:0 
回复 2楼 lmlm1001
我把每个成员的大小打印出来,运行结果是20,4,1,4
把每个成员的地址也打印出来,发现char cSex 和 int iGrade的地址差距为4,char cSex大小为1,为何占了4个字节。

程序代码:
#include <stdio.h>

int main()
{
    struct Student
    {
        char cName[20];
        int iNumber;
        char cSex;
        int iGrade;
    };
    
    struct Student student[5]=
    {
        {"Wangjiasheng",12062212,'M',3},
        {"YuLongjiao",12062213,'W',3},
        {"JiangXuehuan",12062214,'W',3},
        {"ZhangMeng",12062215,'W',3},
        {"HanLiang",12062216,'M',3},
    };
    
    printf("sizeof(student[0].cName)=%d\n",sizeof(student[0].cName));
    printf("sizeof(student[0].iNumber)=%d\n",sizeof(student[0].iNumber));
    printf("sizeof(student[0].cSex)=%d\n",sizeof(student[0].cSex));
    printf("sizeof(student[0].iGrade)=%d\n",sizeof(student[0].iGrade));
    
    printf("locationof(student[0].cName)=%p\n",&student[0].cName);
    printf("locationof(student[0].iNumber)=%p\n",&student[0].iNumber);
    printf("locationof(student[0].cSex)=%p\n",&student[0].cSex);
    printf("locationof(student[0].iGrade)=%p\n",&student[0].iGrade);
    
    return 0;

 } 

2017-07-04 23:11
醉游人
Rank: 2
等 级:论坛游民
帖 子:15
专家分:10
注 册:2017-6-4
得分:0 
回复 4楼 lmlm1001
谢谢!!
2017-07-04 23:42
醉游人
Rank: 2
等 级:论坛游民
帖 子:15
专家分:10
注 册:2017-6-4
得分:0 
回复 6楼 吹水佬
谢谢,按你的方法试了确实如此。

知道为什么这个结构的大小不等于结构中每个成员的大小之和就可以了,不然真的很纳闷。
2017-07-05 21:28



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-479174-1-1.html




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

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