1. 程式人生 > >聯合和列舉型別

聯合和列舉型別

       說了結構體,就不得不說聯合和列舉。

       聯合這個型別的設計就是為了節省記憶體,聯合內的元素共用一段儲存空間,空間大小由最大的資料元素決定。聯合空間只有一個最新賦值的成員值有效。一句話總結:空間共享,後來為主。

       聯合的定義跟結構一樣,也有3種方式“:

      union  UNI

      {

           char ch;

           float x;

      };

     union UNI u;

     或

     typedef  union  UNI

     {

          char ch;

          float x;

     }UNI;

    UNI u;

   或

   typedef  union

   {

         char ch;

         float  x;

   }UNI;

    UNI u;

    聯合變數u可以初始化,但只能初始化第一個成員,即不能對聯合變數整體賦值

    列舉型別也是一種使用者自定義型別,它允許使用者定義有限個常量(注意是常量!),每個常量由使用者自己的識別符號來標示,這種型別更貼近處理實際問題,每個常量識別符號都有確定的意義,增強程式碼的可讀性。

     列舉型別的定義與結構體、聯合一樣,

     例:enum  WEEKDAY {Sun,Mon,Tue,Wed,Thu,Fri,Sat};

             enum  WEEKDAY w;

     給列舉變數賦值的一般是列舉元素,用常量表達式給列舉變數賦值時必須要強制型別轉換,列舉元素是常量,不能作為左值!

            w = mon;  //列舉元素給列舉變數賦值

            w = (enum WEEKDAY)6;// 常量表達式給列舉變數賦值

           mon = (enum WEEKDAY)1;//非法