C語(yǔ)言必備知識(shí)共用體
共用體是一種 構(gòu)造數(shù)據(jù)類型 ,有時(shí)候也稱之為聯(lián)合體。它的用途:使幾個(gè)不同類型的變量共占一段內(nèi)存。
共用體舉例
union 共用體名
{
類型標(biāo)識(shí)符 成員名;
類型標(biāo)識(shí)符 成員名;
};
union data //共用體名字是data
{
int i; //整型數(shù)據(jù)
char ch; //字符型數(shù)據(jù)
float f; //浮點(diǎn)型數(shù)據(jù)
};
共用體特點(diǎn)
共用體變量任何時(shí)刻只有一個(gè)成員存在 共用體變量定義分配內(nèi)存的長(zhǎng)度=最長(zhǎng)成員所占字節(jié)數(shù)
驗(yàn)證一下
#include < stdio.h > //printf scanf fputc
union data //共用體名字是data
{
int i; //整型數(shù)據(jù)
char ch; //字符型數(shù)據(jù)
float f; //浮點(diǎn)型數(shù)據(jù)
};
union data dddd;
int main(void)
{
printf("共用體內(nèi)存是:%drn",sizeof(dddd));//實(shí)際打印的是float所占內(nèi)存大小
printf("float內(nèi)存是:%drn",sizeof(float));//實(shí)際打印的是float所占內(nèi)存大小
printf("int內(nèi)存是%drn",sizeof(int));
printf("char內(nèi)存是:%drn",sizeof(char));
return0;
}
共用體變量里面內(nèi)存的大小可以說(shuō)跟float內(nèi)存大小一樣。也可以說(shuō)是跟int大小一樣,這里都是4個(gè)字節(jié)。
共用體變量的定義
//定義共用體的時(shí)候把變量寫在共用體的后面 例如這里的a b都是共用體類型的變量名
union data
{
int i;
char ch;
float f;
}a,b;
//用共用體來(lái)定義 dddd就是共用體類型的變量名
union data dddd;
//共用體指針定義
union data *p;
//共用體數(shù)組定義
union data d[3];
//省略類型名字的 共用體變量 a b c
union
{
int i;
char ch;
float f;
} a,b,c;
測(cè)試代碼如下
union
{
int i;
char ch;
float f;
} a,b,c;
int main(void)
{
printf("共用體內(nèi)存是:%drn",sizeof(a));//實(shí)際打印的是float所占內(nèi)存大小
printf("float內(nèi)存是:%drn",sizeof(float));//實(shí)際打印的是float所占內(nèi)存大小
printf("int內(nèi)存是%drn",sizeof(int));
printf("char內(nèi)存是:%drn",sizeof(char));
return0;
}
共用體變量的引用方式3種
- 共用體變量名.成員名
- 共用體指針名->成員名
- (*共用體指針名).成員名
跟結(jié)構(gòu)體非常相似 變量訪問(wèn)用點(diǎn)、指針訪問(wèn)用箭頭、星號(hào)可以把指針的內(nèi)容取出。
dddd.i = 1;
printf("dddd.i = %drn",dddd.i);
dddd.ch = 'm';
printf("dddd.ch = %crn",dddd.ch);
dddd.f = 1.3;
printf("dddd.f = %frn",dddd.f);
注意:
- 同一個(gè)內(nèi)存段可以用來(lái)存放幾種不同類型的成員,但在每 一瞬時(shí)只能存放其中一種,而不是同時(shí)存放幾種。
- 共用體變量中起作用的成員是最后一次存放的成員 只保留了1.3

在這里插入圖片描述
- 共用體變量和它的各成員的地址都是同一地址
至此,共用體的知識(shí)點(diǎn)簡(jiǎn)單說(shuō)完了。
附上代碼:
#include < stdio.h > //printf scanf fputc
union data //共用體名字是data
{
int i; //整型數(shù)據(jù)
char ch; //字符型數(shù)據(jù)
float f; //浮點(diǎn)型數(shù)據(jù)
};
union data dddd;
union data *p;
int main(void)
{
dddd.i = 1;
dddd.ch = 'm';
dddd.f = 1.3;
printf("dddd.i = %drn",dddd.i);
printf("dddd.ch = %crn",dddd.ch);
printf("dddd.f = %frn",dddd.f);
printf("i地址 = %prn",&dddd.i);
printf("ch地址 = %prn",&dddd.ch);
printf("f地址 = %prn",&dddd.f);
return0;
}
!
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
內(nèi)存
+關(guān)注
關(guān)注
9文章
3212瀏覽量
76383 -
C語(yǔ)言
+關(guān)注
關(guān)注
183文章
7644瀏覽量
145645 -
代碼
+關(guān)注
關(guān)注
30文章
4968瀏覽量
74004
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
熱點(diǎn)推薦
C語(yǔ)言基礎(chǔ)知識(shí)科普
C語(yǔ)言是單片機(jī)開發(fā)中的必備基礎(chǔ)知識(shí),本文列舉了部分STM32學(xué)習(xí)中比較常見的一些C語(yǔ)言基礎(chǔ)
發(fā)表于 07-21 10:58
?2473次閱讀
C語(yǔ)言-枚舉、共用體
前面章節(jié)學(xué)習(xí)了結(jié)構(gòu)體,結(jié)構(gòu)體里可以按順序存放相同或者不同的數(shù)據(jù)類型,每個(gè)成員都有它對(duì)應(yīng)的存儲(chǔ)空間。
而共用體和結(jié)構(gòu)體一樣也可以按順序存放相
C51單片機(jī)及C語(yǔ)言知識(shí)點(diǎn)必備秘籍
電子發(fā)燒友網(wǎng)訊:應(yīng)廣大電子發(fā)燒友網(wǎng)讀者要求,本電子書《C51單片機(jī)及C語(yǔ)言知識(shí)點(diǎn)必備秘籍》為《單片機(jī)關(guān)鍵
發(fā)表于 07-30 13:59
?1w次閱讀
什么是C語(yǔ)言共用體?
;volatile unsigned char G: 1;volatile unsigned char DP: 1; } B; volatile unsigned char W;} ;這是個(gè)什么共用體?怎么稱呼的?這是共用
發(fā)表于 10-25 02:32
結(jié)構(gòu)體與共用體的區(qū)別
轉(zhuǎn)載重點(diǎn):共用體的所有成員占用同一段內(nèi)存,修改一個(gè)成員會(huì)影響其余所有成員。圖形分析影響過(guò)程通過(guò)前面的講解,我們知道結(jié)構(gòu)體(Struct)是一種構(gòu)造類型或復(fù)雜類型,它可以包含多個(gè)類型不同的成員。在
發(fā)表于 07-20 06:57
C語(yǔ)言的結(jié)構(gòu)體和共用體在單片機(jī)中的妙用是什么
【分享】C語(yǔ)言的結(jié)構(gòu)體和共用體在單片機(jī)中的妙用C語(yǔ)言
發(fā)表于 11-30 06:13
怎樣去使用C語(yǔ)言的結(jié)構(gòu)體和共用體呢
C語(yǔ)言的結(jié)構(gòu)體和共用體分別有何特點(diǎn)呢?怎樣去使用C語(yǔ)言
發(fā)表于 01-17 07:51
聯(lián)合體/共用體的使用方法
大家好,我是ZhengN。本次給分享聯(lián)合體的一些知識(shí)。聯(lián)合體/共用體的使用 C語(yǔ)言中,聯(lián)合體/共用
發(fā)表于 02-28 10:05
C語(yǔ)言程序設(shè)計(jì)教程之結(jié)構(gòu)體與共用體的詳細(xì)資料說(shuō)明
本文檔詳細(xì)介紹的是C語(yǔ)言程序設(shè)計(jì)教程之結(jié)構(gòu)體與共用體的詳細(xì)資料說(shuō)明主要內(nèi)容包括了:1 結(jié)構(gòu)體,2
發(fā)表于 03-01 17:20
?11次下載
C語(yǔ)言的結(jié)構(gòu)體和共用體在單片機(jī)中的妙用
【分享】C語(yǔ)言的結(jié)構(gòu)體和共用體在單片機(jī)中的妙用C語(yǔ)言
發(fā)表于 11-20 19:36
?20次下載
什么是C語(yǔ)言共用體類型
結(jié)構(gòu)體變量所占內(nèi)存長(zhǎng)度是各成員占的內(nèi)存長(zhǎng)度之和。每個(gè)成員分別占有其自己的內(nèi)存單元。而共用體變量所占的內(nèi)存長(zhǎng)度等于最長(zhǎng)的成員的長(zhǎng)度。
C語(yǔ)言編程必備知識(shí)合集
電子發(fā)燒友網(wǎng)站提供《C語(yǔ)言編程必備知識(shí)合集.zip》資料免費(fèi)下載
發(fā)表于 11-21 09:34
?1次下載
C語(yǔ)言必備知識(shí)共用體
評(píng)論