C語言必備知識共用體
共用體是一種 構造數據類型 ,有時候也稱之為聯合體。它的用途:使幾個不同類型的變量共占一段內存。
共用體舉例
union 共用體名
{
類型標識符 成員名;
類型標識符 成員名;
};
union data //共用體名字是data
{
int i; //整型數據
char ch; //字符型數據
float f; //浮點型數據
};
共用體特點
共用體變量任何時刻只有一個成員存在 共用體變量定義分配內存的長度=最長成員所占字節數
驗證一下
#include < stdio.h > //printf scanf fputc
union data //共用體名字是data
{
int i; //整型數據
char ch; //字符型數據
float f; //浮點型數據
};
union data dddd;
int main(void)
{
printf("共用體內存是:%drn",sizeof(dddd));//實際打印的是float所占內存大小
printf("float內存是:%drn",sizeof(float));//實際打印的是float所占內存大小
printf("int內存是%drn",sizeof(int));
printf("char內存是:%drn",sizeof(char));
return0;
}
共用體變量里面內存的大小可以說跟float內存大小一樣。也可以說是跟int大小一樣,這里都是4個字節。
共用體變量的定義
//定義共用體的時候把變量寫在共用體的后面 例如這里的a b都是共用體類型的變量名
union data
{
int i;
char ch;
float f;
}a,b;
//用共用體來定義 dddd就是共用體類型的變量名
union data dddd;
//共用體指針定義
union data *p;
//共用體數組定義
union data d[3];
//省略類型名字的 共用體變量 a b c
union
{
int i;
char ch;
float f;
} a,b,c;
測試代碼如下
union
{
int i;
char ch;
float f;
} a,b,c;
int main(void)
{
printf("共用體內存是:%drn",sizeof(a));//實際打印的是float所占內存大小
printf("float內存是:%drn",sizeof(float));//實際打印的是float所占內存大小
printf("int內存是%drn",sizeof(int));
printf("char內存是:%drn",sizeof(char));
return0;
}
共用體變量的引用方式3種
- 共用體變量名.成員名
- 共用體指針名->成員名
- (*共用體指針名).成員名
跟結構體非常相似 變量訪問用點、指針訪問用箭頭、星號可以把指針的內容取出。
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);
注意:
- 同一個內存段可以用來存放幾種不同類型的成員,但在每 一瞬時只能存放其中一種,而不是同時存放幾種。
- 共用體變量中起作用的成員是最后一次存放的成員 只保留了1.3
在這里插入圖片描述
- 共用體變量和它的各成員的地址都是同一地址
至此,共用體的知識點簡單說完了。
附上代碼:
#include < stdio.h > //printf scanf fputc
union data //共用體名字是data
{
int i; //整型數據
char ch; //字符型數據
float f; //浮點型數據
};
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;
}
!
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
內存
+關注
關注
8文章
2903瀏覽量
73540 -
C語言
+關注
關注
180文章
7575瀏覽量
134092 -
代碼
+關注
關注
30文章
4671瀏覽量
67769
發布評論請先 登錄
相關推薦
C語言-枚舉、共用體
前面章節學習了結構體,結構體里可以按順序存放相同或者不同的數據類型,每個成員都有它對應的存儲空間。
而共用體和結構體一樣也可以按順序存放相
什么是C語言共用體?
;volatile unsigned char G: 1;volatile unsigned char DP: 1; } B; volatile unsigned char W;} ;這是個什么共用體?怎么稱呼的?這是共用
發表于 10-25 02:32
結構體與共用體的區別
轉載重點:共用體的所有成員占用同一段內存,修改一個成員會影響其余所有成員。圖形分析影響過程通過前面的講解,我們知道結構體(Struct)是一種構造類型或復雜類型,它可以包含多個類型不同的成員。在
發表于 07-20 06:57
什么是C語言共用體類型
結構體變量所占內存長度是各成員占的內存長度之和。每個成員分別占有其自己的內存單元。而共用體變量所占的內存長度等于最長的成員的長度。
評論