C語言中聯合的使用基礎

2021-07-29 09:23:34 字數 1167 閱讀 9486

這又是乙個時常看但是不常寫的東西,在我現在的工作中用到的相關地方基本上也是處理器驅動對於暫存器的抽象。

聯合的定義方式其實跟結構體在語法上類似,不同的地方是結構體的成員占用不同的儲存區域而聯合的成員則是共享相同的儲存。雖說如此,但是並不意味著聯合的成員必須是資料型別相同的元素。

基礎知識點**如下;

#include"stdio.h"

#include"string.h"

union

int a;

float b;

char c[4];

} demo_union =;

int main(void)

printf("a is%d\n",demo_union.a);

printf("b is%f\n",demo_union.b);

printf("c is%s\n",demo_union.c);

demo_union.b = 234.0f;

printf("a is%d\n",demo_union.a);

printf("b is%f\n",demo_union.b);

printf("c is%s\n",demo_union.c);

strcpy(demo_union.c,"ggg");

printf("a is%d\n",demo_union.a);

printf("b is%f\n",demo_union.b);

printf("c is%s\n",demo_union.c);

return 0;

**編譯執行結果:

e:\workspace\01_程式語言\01_c語言\exp_07>gcc exp_07.c

e:\workspace\01_程式語言\01_c語言\exp_07>a

a is 123

b is 0.000000

c is {

a is 1131020288

b is 234.000000

c is

a is 4671303

b is 0.000000

c is ggg

結論:1,只要是占用的儲存空間相同,資料型別可以不一致,甚至可以是陣列(也可以是其他資料結構);

2,每次只能夠有乙個成員占用儲存;

3,能夠進行初始化(但是,只能夠初始化第乙個成員)。

C語言中聯合體union的使用

本文編輯整理自 一 前言 聯合體 union 與 結構體 struct 有一些相似之處。但兩者有本質上的不同。在結構體中,各成員有各自的記憶體空間,乙個結構變數的總長度是各成員長度之和 而在 聯合 中,各成員共享一段記憶體空間,乙個聯合變數的長度等於各成員中最長的長度 應該說明的是,這裡所謂的共享不...

C語言中聯合體union的使用

一 前言 聯合體 union 與 結構體 struct 有一些相似之處。但兩者有本質上的不同。在結構體中,各成員有各自的記憶體空間,乙個結構變數的總長度是各成員長度之和 而在 聯合 中,各成員共享一段記憶體空間,乙個聯合變數的長度等於各成員中最長的長度 應該說明的是,這裡所謂的共享不是指把多個成員同...

c語言中聯合體的使用心得

關於聯合體使用的一點心得 1.聯合體union 當多個資料需要共享記憶體或者多個資料每次只取其一時,可以利用聯合體 union 在c programming language 一書中對於聯合體是這麼描述的 1 聯合體是乙個結構 2 它的所有成員相對於基位址的偏移量都為0 3 此結構空間要大到足夠容納...