C 共用体
共用體是一種特殊的數據類型,允許您在相同的內存位置存儲不同的數據類型
下面定義一個名為 Data 的共用體類型,有三個成員 i、f 和 str:
union Data {int i;float f;char str[20]; } data;現在,Data 類型的變量可以存儲一個整數、一個浮點數,或者一個字符串。這意味著一個變量(相同的內存位置)可以存儲多個多種類型的數據。您可以根據需要在一個共用體內使用任何內置的或者用戶自定義的數據類型。
共用體占用的內存應足夠存儲共用體中最大的成員。例如,在上面的實例中,Data 將占用 20 個字節的內存空間,因為在各個成員中,字符串所占用的空間是最大的。下面的實例將顯示上面的共用體占用的總內存大小:
#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; } Memory size occupied by data : 20訪問共用體成員
為了訪問共用體的成員,我們使用成員訪問運算符(.)。成員訪問運算符是共用體變量名稱和我們要訪問的共用體成員之間的一個句號。您可以使用 union 關鍵字來定義共用體類型的變量。下面的實例演示了共用體的用法:
在這里,我們可以看到共用體的 i 和 f 成員的值有損壞,因為最后賦給變量的值占用了內存位置,這也是 str 成員能夠完好輸出的原因。現在讓我們再來看一個相同的實例,這次我們在同一時間只使用一個變量,這也演示了使用共用體的主要目的:
#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; } data.i : 10 data.f : 220.500000 data.str : C Programming在這里,所有的成員都能完好輸出,因為同一時間只用到一個成員。
總結
- 上一篇: C++基本序列式容器效率比较
- 下一篇: 使用Geth搭建私链