C语言 的一个小程序

116关注521浏览

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

struct st_type
{
char name[10];
float score[3];

};

void main()
{
union u_type
{
int i;

展开全部
收起
3回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • 断桥残雪

    11人对此回答表示赞同

    问题在于结构体存储有个对齐现象,这是为了速度而做的优化,比如数据总线是32位,内存数据取出来的时候都是4个字节一起的,如果要取一个字符,则是通过位运算取出来的,但是如果32位数据刚好是一个char和float的一部分,要取出float,那必须要再访问内存一次,还要组合成一个float,开销就大了。所以存储10个char和3个float时,理论上大小是22,但是出于速度考虑,采用内存对齐,就会是24bytes。
    展开
    11
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 一桶冰水

    9人对此回答表示赞同

    首先,共用体所占内存长度为最长成员的长度.在此无疑是结构体的长度,8+16=24!
    展开
    9
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Jayla

    8人对此回答表示赞同

    sizeof(st_type)=((sizeof(name)+sizeof(socre)+sizeof(float)-1)/sizeof(float))*sizeof(float);

    怎么没加分的呢?
    展开
    8
    0回复
    发布于 6年前

    评论(0)

    收起评论

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部