关于计算结构体数组中字节数

来源:互联网 发布:乐视手机清除数据 编辑:程序博客网 时间:2024/04/30 09:01
2.结构体计算长度,如下:
 #include <stdio.h>
#include <string.h>


struct student
{
  int num;
  char name[20];
  char sex;
  float score;
 
 };
 
main()
{
struct student stu_1, *p;
    printf("steudent len is %d\n", sizeof(struct student));  
}
 
 *****
 理论计算:结构体长度为29,但是编译器计算为32,原因在哪里?
 解决的办法,分别计算包含数据的时候结构体的长度:
 当
struct student
{
  int num;
  
 };------长度为4;
 
 struct student
{
  int num;
  char name[20];
  
 };-----长度为24;
 
 struct student
{
  int num;
  char name[20];
  char sex;
 
 }; -----长度为28, 原因在这里,为了内存边缘对齐,分配了4个字节;
 
 struct student
{
  int num;
  char name[20];
  char sex;
  float score;
 
 }; ------长度为32
 
 
 ******************
 如果:
 struct student
{
  int num;
  char name[20];
  char sex;
  char sex1;
  float score;
 
 }; --长度还是32,
 但是
  struct student
{
  int num;
  char name[20];
  char sex;
  
  float score;
  char sex1;
 

 }; ----长度为36


印象加深

  5     struct stu
  6     {
  7     double i;
  8     char a[20];
  9     char b;
 10     char d;
 11     char e;
 12     char f;
 13     
 14     float c;
 15     }                                     //这个结构体中char b d e f 无论有没有,他的字节数都是36个。


  3 int main()
  4 {
  5     struct stu
  6     {
  7     double i;
  8     char a[20];
  9     char b;
 10     char d;
 11     char e;
 12     char f;
 13     char g;
 14     float c;
 15     };                                           //这里面多加了一个char g  字符型数组字节数溢出(原先是8*3=24个) 所以多加了4个字节 ,也就是40个。



最后:无论struct还是union中,有int参与,都是按照4个字节对齐存放,


计算:占12个字节,但是去掉  char position[10]----10,
  int  banji----4个字节
  为什么是12个?要么是4, 要么是10?
  
  测试:
    union
{
       int banji;
       char position[11];
}category;--- 占12个字节

 union
{
      // int banji;
       char position[11];
}category;占11个字节;


两者比较,就是有了int类型后,编译器按照4字节对齐方式来分配内存了。

 
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 婴儿吃米粉腹泻怎么办 小儿胃寒呕吐怎么办 孩子突然一直吐怎么办 宝宝呕吐并发烧怎么办 宝宝发烧呕吐拉稀怎么办 小孩发高烧还吐怎么办 二个多月的宝宝拉肚子怎么办 宝宝肚子着凉吐怎么办 孩子胃着凉呕吐怎么办 一岁受凉呕吐怎么办 孩子着凉了呕吐怎么办 小孩受凉呕吐腹泻怎么办 宝宝胃受寒呕吐怎么办 一岁半宝宝受寒呕吐怎么办 治小儿反复发烧怎么办 海洋宝宝吃下去怎么办 两岁儿童拉肚子怎么办 14天宝宝拉肚子怎么办 小孩不消化引起发烧怎么办 宝宝胃胀呕吐怎么办 小儿胃胀不消化怎么办 4岁小儿腹胀怎么办 两岁半的宝宝吐怎么办 月子宝宝闹人怎么办 宝宝一周岁拉肚子怎么办 一岁幼儿呕吐怎么办 孩子受凉呕吐拉肚子怎么办 5岁儿童呕吐怎么办 小孩发烧老是吐怎么办 宝宝吃雪糕呕吐怎么办 小孩感冒发烧吐怎么办 宝宝呕吐加发热怎么办 七个月宝拉肚子怎么办 新生儿17天拉稀怎么办 七个半月宝宝拉肚子怎么办 七个月婴儿拉稀怎么办 宝宝不停的拉稀怎么办 猫咪受凉了呕吐怎么办 孩子生理性腹泻怎么办 婴儿肚子受凉了怎么办 小孩说话有点口吃怎么办