联合体由多个结构体组成,总结结构体和联合体的区别

  联合体由多个结构体组成,总结结构体和联合体的区别

  Yyds干货库存

  @TOC

  一.结构

  1.结构变量

  结构s

  char name[20];

  int age

  }p1,p2;

  int main()

  结构P3;

  返回0;

  }

  P1、p2和p3都是结构变量。

  然而,P1和P2被定义为main之外的全局变量。

  P3是一个局部变量

  2.特别声明

  声明时,它没有完全声明为匿名结构类型。

  注意,匿名结构类型只能使用一次。

  #包含stdio.h

  结构体

  char name[20];

  int age

  };

  3.结构的引用

  1.嵌套调用

  通过调用pa变量返回到stdent结构。

  #包含stdio.h

  结构学生

  char name[20];

  int age

  char sex[20];

  结构教师

  char name[20];

  int age

  构造学生pa;

  char sex[20];

  };

  2.自引

  (1)自己做不到。我可以称自己为无限娃娃。

  #包含stdio.h

  结构S

  char name[20];

  int age

  结构的pa;//错误

  int main()

  结构S;

  返回0;

  }

  (2)如果要访问下一个同类型同自身类型的结构

  使用指针指向下一个要访问的结构。

  #包含stdio.h

  结构s

  int age

  结构s * nest

  };

  # 3.结构初始化

  这里的初始化很简单。

  以嵌套调用为例。

  #包含stdio.h

  结构学生

  char name[20];

  int age

  char sex[20];

  结构教师

  char name[20];

  int age

  结构学生的;

  char sex[20];

  int main()

  Struct老师p={ 张三,三五,{ 王五,十六,男 },男 };

  printf( % s % d % s % d % s % s % s \ n ,个人姓名,个人年龄,个人姓名,个人年龄,个人性别,

  p . sex };

  返回0;

  }

  四。结构的记忆对齐

  1.第一个结构构件放置在偏移0处。

  2.如果放在VS中,默认对齐号是8。

  下面的结构成员使用它的字节与默认的对齐号进行比较,较小的那个是结构成员的对齐号。结构成员被放置在对齐数字的整数倍的地址处。

  结构的大小是所有成员的最大对齐方式的整数倍。

  VS中的默认对齐数字是8

  Char是1字节,1 8,也就是A的对齐号是1。

  Int是4字节4 ^ 8,也就是B的对齐数是4。

  C为1字节,1 8,即C的对齐数为1。

  正常情况下应该取9个字节,9没有达到最大对齐数4的整数倍。

  所以休息12分钟。

  2.

  #包含stdio.h

  结构s2

  char c1

  char c2

  int I;

  int main()

  strcut S2 S;

  printf(%d\n ,sizeof(S));

  返回0;

  }

  Char是1字节,1 8,也就是c1的对齐号是1

  Char c2是1字节1 8,也就是c2的对齐号是1。

  Int为4字节4 ^ 8,即I的对齐数为4。

  最大对齐数是4,因为最后,8是4的整数倍。

  即8

  3.修改校准号。

  #包含stdio.h

  #pragma pack(2) //将默认对齐编号修改为2

  结构s

  char a;

  int b;

  char c;

  #pragma pack() //消除修改后的对齐号,即只对上述结构生效。

  int main()

  结构s pa={ 0 };

  printf(%d\n ,sizeof(pa));

  返回0;

  }

  请注意,校准号是结构构件偏转的位置。

  偏转的大小是字节数。

  修改后,默认对齐编号为2

  Char是1字节,1 2,也就是A的对齐号是1

  Int是4字节4 ^ 2,也就是B的对齐数是2。

  C为1字节,1 ^ 2,即C的对齐数为1。

  最大对齐数为2。

  但是结构最后是7,不是2的整数倍,最后是8。

  段的成员必须是int、unsigned int、signed int。

  成员后面必须跟冒号和数字。

  比特的空间是按照int或者char打开的。

  我们通常将位段的成员从低位转移到高位。

  如果空间中没有足够的内容留给下一个成员使用,这个空间就会被浪费。

  2.练习题

  #包含stdio.h

  结构S

  char _ a:3;//a占用两位。

  char _ b:4;//b占用4位。

  char _ c:5;//c占用5位。

  char _ d:4;//d占用4位。

  结构S={ 0 };

  s.a=10

  s.b=12

  s . c=3;

  标准差=4;

  10-1010-010-占用3位。

  B 12-1100-1100-4位。

  C 5-00101-00101-5位。

  D 4-0010-0010-4位。

  不及物动词财团

  1.一种特殊的自定义类型,主要表现为成员共享一个空间。

  财团的计算

  财团的规模至少是最大成员的规模。

  当最大成员大小不是最大对齐数的整数时,对齐到最大对齐数的整数。

  1.正常算法问题

  VS默认校准号是8

  Int是4字节,4 ^ 8,A的对齐数是4。

  Char是1字节,1 8 b的对齐号是1

  a和B共享第一个空格,所以是4

  因为4是最大对齐数4的整数倍,也就是4。

  #包含stdio.h

  联合国联盟

  int a;

  char b;

  int main()

  联合国巴勒斯坦权力机构联盟;

  printf(%d\n ,sizeof(pa));//4

  返回0;

  }

  2.用财团来判断大小端。

  #包含stdio.h

  int move()

  联合国联盟

  int a;

  char b;

  u . a=1;

  返回u.b

  int main()

  int ret=move();

  if(ret==1)

  Printf(小端\ n );

  其他

  printf( big end \ n );

  返回0;

  。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • office2010激活密钥大全 怎么永久激活office2010
  • project2010产品密钥免费_project2010激活密钥永久激活码
  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • chatgpt是什么?为什么这么火?
  • ChatGPT为什么注册不了?OpenAI ChatGPT的账号哪里可以注册?
  • OpenAI ChatGPT怎么注册账号?ChatGPT账号注册教程
  • chatgpt什么意思,什么是ChatGPT ?
  • CAD中怎么复制图形标注尺寸不变,CAD中怎么复制图形线性不变
  • cad中怎么创建并使用脚本文件,cad怎么运行脚本
  • cad中快速计算器的功能,cad怎么快速计算
  • cad中快速修改单位的方法有哪些,cad中快速修改单位的方法是
  • cad中心点画椭圆怎么做,cad轴测图怎么画椭圆
  • CAD中常用的快捷键,cad各种快捷键的用法
  • 留言与评论(共有 条评论)
       
    验证码: