A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zsfy 初级黑马   /  2014-11-9 23:55  /  1184 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如下,为什么是20?而不是30呢?

#include <stdio.h>
int main()
{   
        struct student
        {
                int age;
                char name[15];
        };

        struct student stu={20,"qwertyuiop"};
        int s = sizeof(stu);
        printf("%d\n",s);
        return 0;
}

评分

参与人数 1技术分 +1 收起 理由
星河鹭起 + 1

查看全部评分

6 个回复

倒序浏览
本帖最后由 doudou33420 于 2014-11-10 01:12 编辑

我刚刚是胡扯的
回复 使用道具 举报
doudou33420 发表于 2014-11-10 00:30
int = 4     char name[15] = 16  (加上\0)

为什么是相加?
回复 使用道具 举报
本帖最后由 doudou33420 于 2014-11-10 01:13 编辑
我刚刚是胡扯的
如果你明白结构体打小是如何计算的话 在看下面的
结构体的总大小为结构体最宽基本类型成员大小的整数背
char name[15] = 15 * 1;
int = 4;  (他是结构体最宽的基本类型)
15+4 = 19   19不是4的整数倍 所以多加1
回复 使用道具 举报
这回说的对,补齐算法,这里面向int补齐
回复 使用道具 举报
doudou33420 发表于 2014-11-10 01:11
我刚刚是胡扯的
如果你明白结构体打小是如何计算的话 在看下面的
结构体的总大小为结构体最宽基本类型成员 ...

这么说的话就解释的通了,呵呵
回复 使用道具 举报
zsfy 初级黑马 2014-11-10 09:25:23
7#
doudou33420 发表于 2014-11-10 01:11
我刚刚是胡扯的
如果你明白结构体打小是如何计算的话 在看下面的
结构体的总大小为结构体最宽基本类型成员 ...

嗯,我以为他会把字符数组作为一个整体看。是我理解错了,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马