C_language_renew07

结构体大小
结构体对齐原则:

  • x86(linux 默认#pragma pack(4),window默认#pragma pack(8))。Linux最大支持4字节对齐。
  • 方法:
  • 1、取pack(n)的值(n = 1 2 4 8--),取结构体中类型最大值m。两者取小即为外对齐大小 Y= (m < n:m,n)。
  • 2、将每一个结构体的成员大小与Y比较取小者为X,作为内对齐大小。
  • 3、所谓按X对齐,即为地址(设起始地址为0)能被x整除的地方开始存放数据
  • 4、外部对齐原则是依据Y的值,进行补空操作

结构体
1、向结构体内未初始化的指针拷贝,指针是门牌号,通常申请内存malloc再拷贝数据
2、释放结构体内指针所指向的空间(由内向外)


共用体union与枚举enum
union主要是网络编程、协议分析、内核代码
定义:结构体的大小:是由所有成员空间大小组合而成,每一个成员共用一个起始地址

高太位

判断大小端序
提高程序的可读性
指针指向谁,就保存谁的地址


enum的应用案例:

  enum DAY
  {
      MON = 1,TUR,WED,THU,FRT,SAT,SUM
  };
  int main()
  {
      unsigned int today;
      printf("please input today Num:");
      scanf("%d",&today);
    
      today = today % 7;
      enum DAY day = today;
      
      switch (day)
      {
          case MON:
          case TUR:
          case WED:
          case THU:
          case FRT:
                  printf("today is workday\n");
                  break;
          case SAT:
          case SUM:
                  printf("today is holiday\n");
                  break;
      }
       return 0;
  }

推荐阅读更多精彩内容