结构体是构造数据类型的一种 结构体的实质 结构体是大体上连续的地址上的元素集合 结构体中的元素的存储要考虑对齐 结构体的作用 在c语言中,结构体是一种非常重要的数据类型。 封装多个不同类型的元素,作为交互的一个接口 交互这块,结构体变量可以作为数据结构中的一个节点,可以作为网络通信中发送的消息的封装,可以作为内核中文件属性的封装,可以作为驱动中对设备文件操作的封装. 也是说,驱动,内核,应用方面都应用到了结构体,频率远远高于数组和共用体,与指针相辅相成,应用极其广泛 结构体的组成 结构体是依靠不同的数据类型的组合创建起来的,数组的元素可以是之下的任何几种的组合 整型 浮点型 字符型 指针型 枚举型 数组 结构体 共用体 结构体的声明
  /*结构体的声明不分配内存空间*/
  struct hello{//结构体类型名为 struct hello
  int hello;//结构体成员名可以与结构体类型名中的第二个标识符相同
  char c[100];
  struct hello * p;//结构体可以包含该结构体指针,但是不可以包含该结构体
  };
  结构体变量的定义
  /*结构体的定义分配内存空间*/
  struct hello hello;//我是说这样可以定义,我只是演示而已,千万不要像我这样定义,确保别人看你的标识符知道你写的是什么东西
  结构体的对齐 #### 结构体变量和常量的存储并不是像数组那样连续存储的,而是大体上连续,这里涉及到一个对齐的概念 按照以下规则对齐 1.各元素中的大存储字节数大于4按照4 对齐 2.各元素中的大存储字节数大于4按照4 对齐 注意:对齐中不要忘了补齐
  对齐的概念为
  结构体成员存储不能跨"对齐字节线"//我自己想的一个概念
  对齐字节线:假设按照6对齐(实际上不存在按照6对齐)
  abcdef|ghijkl|mnopqr|st
  如上一行:"|"为对齐字节线。一个结构体成员类型不能跨字节线存储
  如上面结构体的存储,为20字节.
  对齐之后还要补齐为小的大于20的6的整数倍,即补齐为24字节.