一、C語言的共用體union
共用體是一種特殊的數(shù)據(jù)類型,允許您在相同的內(nèi)存位置存儲不同的數(shù)據(jù)類型。
什么意思呢,就是在同一塊內(nèi)存存儲可以定義多個數(shù)據(jù)類型,但是在使用的時候,只有一個變量有效。
這里就有一個問題,變量有大有小呀,對的,所以這個時候共用體的空間為內(nèi)部變量最大占用空間的值。
如此這般,共用體就可以通過共享存儲空間,來避免當(dāng)前沒有被使用的變量所造成的存儲空間的浪費。
共用體的成員可以使用任何數(shù)據(jù)類型,但是一個共用體所占用的存儲空間的字節(jié)總數(shù),必須保證至少足以能夠容納其占用空間字節(jié)數(shù)最大的成員。并且共用體每次只允許訪問一個成員,也就是一種數(shù)據(jù)類型,確保按照正確的數(shù)據(jù)類型來訪問共用體中的數(shù)據(jù),就是你的責(zé)任了。
先看看union的格式:
union [tag]
{
member definition;
member definition;
...
member definition;
} [variables];
其中:
- union為類型變量;
- tag為共用體的標(biāo)記;
- member definition為變量的定義;
舉個例子:
union test
{
int i;
float f;
double d;
char str[20];
} data;
通過這個例子可以看到,這個結(jié)構(gòu)體的大小是多少呢?可以通過程序來確認(rèn)一下。
OK,這次我們來聊聊結(jié)構(gòu)體。
任務(wù)來了,我想讓你給學(xué)生建立一個數(shù)據(jù)庫,該怎么來做。
這個學(xué)生包含的信息如下:
- ID:也就是學(xué)號,唯一區(qū)別碼,用整型表示
- Name:姓名,用字符串表示
- Age:年齡,用整型表示
- Sex:性別,用字符串表示
按照目前學(xué)過的知識我們的代碼如下,比如先來一個李雷同學(xué)的吧:
#include
#include
union test
{
int i;
float f;
double d;
char str[20];
};
int main( )
{
union test data;
printf( "data size : %d\n", sizeof(data));
return 0;
}
END來源:十月天文版權(quán)歸原作者所有,如有侵權(quán),請聯(lián)系刪除。
▍