C_language_renew07

作者: 遮天的龙 | 来源:发表于2017-12-18 09:31 被阅读25次

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

    • 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;
      }
    

    相关文章

      网友评论

        本文标题:C_language_renew07

        本文链接:https://www.haomeiwen.com/subject/kvspwxtx.html