解释一个c语言小问题

[复制链接]
查看11 | 回复5 | 2010-6-15 22:13:00 | 显示全部楼层 |阅读模式
以下程序的运行结果是:
typedef union student
{
char name[10];
long sno;
char sex;
float score[4];
}STU;
main()
{
STU a[5];
printf("%d\n",sizeof(a));
} --------------------------------结果是什么?帮忙解释一下过程~~~

回复

使用道具 举报

千问 | 2010-6-15 22:13:00 | 显示全部楼层
输出结果为 80因为: printf("%d\n",sizeof(a));的意识是输出student中的float变量的长度。由于float的长度是4,而float score[4];是4*4,而STU a[5]; 是4*4*5所以结果输出为80
回复

使用道具 举报

千问 | 2010-6-15 22:13:00 | 显示全部楼层
结果是80STU的分配空间大小选择于其几个数据类型中最大的,float score[4]占用最多为16位空间,所以STU分配空间为16位,定义的STU数组a[5]就是16*5=80。
回复

使用道具 举报

千问 | 2010-6-15 22:13:00 | 显示全部楼层
typedef union student{char name[10];long sno;char sex;float score[4];}STU;/*1个STU,内存需要为其分配上面的4种类型长度*/main(){STU a[5];/*内存建立5组这样的STU空间*/printf("%d\
回复

使用道具 举报

千问 | 2010-6-15 22:13:00 | 显示全部楼层
程序是错的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行