next up previous contents
Next: 輸入與輸出 Up: Structures 和 Unions Previous: Bit Fileds   Contents

Union

  1. Union 允許使用者儲存不同型態的資料變數在相同的記憶體位址,用戶可定義在一個 union 中定義很多成員,但同一時間只有一個成員可被存取,同樣可以節省記憶體。定義如下:
    union [union tag]
    {
       member definition;
       member definition;
       ...
       member definition;
    } [one or more union variables];
    
  2. 定義範例
    union Data
    {
       int i;
       float f;
       char  str[20];
    } data;
    
  3. 範例
    #include <stdio.h>
    #include <string.h>
     
    union Data
    {
       int i;
       float f;
       char  str[20];
    };
     
    int main( )
    {
       union Data data;        
    
       printf( "Memory size occupied by data : %d\n", sizeof(data));
    
       return 0;
    }
    
  4. 範例:無法同時存取 union 的成員。
    #include <stdio.h>
    #include <string.h>
     
    union Data
    {
       int i;
       float f;
       char  str[20];
    };
     
    int main( )
    {
       union Data data;        
    
       data.i = 10;
       data.f = 220.5;
       strcpy( data.str, "C Programming");
    
       printf( "data.i : %d\n", data.i);
       printf( "data.f : %f\n", data.f);
       printf( "data.str : %s\n", data.str);
    
       return 0;
    }
    
  5. 範例:一次存取 union 的一個成員。
    #include <stdio.h>
    #include <string.h>
     
    union Data
    {
       int i;
       float f;
       char  str[20];
    };
     
    int main( )
    {
       union Data data;        
    
       data.i = 10;
       printf( "data.i : %d\n", data.i);
       
       data.f = 220.5;
       printf( "data.f : %f\n", data.f);
       
       strcpy( data.str, "C Programming");
       printf( "data.str : %s\n", data.str);
    
       return 0;
    }
    


2015-01-16