C语言题目,详细解释,为什么

如题所述

一共占24个字节:

结构体首先为char分配6个字节,然后在分int4个字节的时候,规定前面分配的字节6应该是当前分配的字节4的倍数,一个char是一个字节,4个char占1个int的空间,后面2个char不是4的倍数强行扩展到4的倍数,即4,所以char  num[6]分配了4+4=8个字节,然后轮到int了,int s[4]分配4*4=16个字节,一共8+16=24个字节,然后再看24是不是int所占字节4的倍数,24是4的倍数,所以最后就是24个字节了,下面是验证:

#include <stdio.h>
typedef struct a
{
char num[6];
int s[4];
 
}a;
void main()
{
a s;
printf("%d\n",sizeof(a));
}

这是按int4个字节算,你题目要求int占2,所以就是int数组占8个,char数组占3个int的,就是6个,所以最后是8+6=14个字节

追问

怎样看是有多少个字节

怎样看是有多少个字节

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-05-29
1x6+2x4+1x4=18追问

为什么这么计算,怎么看的,能给我讲解下这个程序吗

第2个回答  2017-05-29
数就知到了 空格也是一个
第3个回答  2017-05-29
简单相加就行了
相似回答