next up previous contents
Next: 存取 Union 成員 Up: 結構與聯合 Previous: Bit Fileds   Contents   DYWANG_HOME

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. 範例
    [dywang@dyw219 zzz]$ vim union1.c
    [dywang@dyw219 zzz]$ cat union1.c
    #include <stdio.h>
    
    union Data {
    	int i;
    	float f;
    	char  str[20];
    };
     
    int main () {
    	union Data data;
    
    	printf( "sizeof(data) = %d\n", sizeof(data));
    
    	return 0;
    }
    
  4. 編譯
    [dywang@dyw219 zzz]$ gcc -o union1 union1.c
    
  5. 執行結果:資料型態 int, float 佔用 4 個位元組, char str[20] 佔用 20 個位元組,所以 union data 佔用 20 個位元組。
    [dywang@dyw219 zzz]$ ./union1 
    sizeof(data) = 20
    



De-Yu Wang 2021-01-11