C語言共同體

2021-08-15 16:09:52 字數 1186 閱讀 5487

共同體型別

設有字元型變數c、整型變數j,若這二個變數在使用過程中互斥,即當用到c時,一定不用j,當用j時,一定不用c,則無需為二個變數分配不同的儲存空間,而可使二個變數共同使用乙個儲存空間,如圖8.1所示。具有這種儲存特性的變數稱為共同體型別的變數。要定義共同體型別變數,必須先定義共同體型別。共同體型別的定義方法與結構體型別的定義方法類似,只要用關鍵字union 代替struct即可。

定義格式: union 《共同體型別名》

;其中,共同體型別名由識別符號組成,成員名也由識別符號組成。成員型別可為基本型別或匯出型別。各成員共用乙個儲存區,儲存區的大小等於各成員占用位元組長度的最大值。例如,定義共同體如下:

union data

;其中:data為共同體型別名,該共同體有兩個成員c、j,c為字元型占用乙個位元組,j為整型佔四個位元組,c與j共用同一儲存區,儲存區長度為四個位元組,如圖8.1所示。

共同體型別變數的定義與結構體型別變數的定義完全相同,也有三種形式:

(1)先定義型別,後定義變數。

(2)定義型別的同時定義變數。

(3)直接定義共同體型別變數。

【例8.8】用三種方式定義共同體型別變數。

# include

union data

;data d; //先定義型別,後定義變數。

union data1

x1,x2,x3; //定義型別的同時定義變數。

union 

a,b,c; //直接定義共同體型別變數。

main ( )

{ d.c='a';

d.j=98;

cout<8.3.3共同體型別變數的引用

共同體變數的引用方式與結構體變數的引用方式相同,即使用成員運算子"."連線變數名與成員名即可,其引用格式為:《共同體變數名》.《成員名》

如上例中d.c、d.j均為對共同體變數d的成員c、j的引用。

使用共同體型別變數的主要目的是減少程式變數對記憶體的佔用量。如今,計算機記憶體已越來越大,所以記憶體容量已不是程式設計中主要考慮的問題。因此,共同體型別變數使用越來越少。

8.3.4共同體型別的特點

(1)同一共同體內的成員共用乙個儲存區,儲存區的大小=成員占用位元組長度最大值。

(2)在任一時刻,在乙個共同體變數中,只有乙個成員起作用。

(3)共同體型別中的成員型別可為任意已定義的資料型別。

由於共同體變數在程式設計中已很少用

C語言之union共同體

union共同體的定義 union空間長度的分配 共同體個變數相互影響及原因 union的使用樣例 新名詞記錄 在c語言中,給我們提供了分配和操作一塊記憶體的方式,那就是union關鍵字。union關鍵字,定義union下面的成員變數共享一塊記憶體,每乙個成員在任一時刻有且只有乙個成員使用此塊記憶體...

結構體,共同體

共用體 構造資料型別,也叫聯合體 用途 使幾個不同型別的變數共佔一段記憶體 相互覆蓋 結構體是一種構造資料型別 用途 把不同型別的資料組合成乙個整體 自定義資料型別 結構體變數所佔記憶體長度是各成員佔的記憶體長度的總和。共同體變數所佔記憶體長度是各最長的成員佔的記憶體長度。共同體每次只能存放哪個的一...

SNMP協議 共同體

snmp定義了管理程序 manager 和管理 agent 之間的關係,這個關係稱為共同體 community 描述共同體的語義是非常複雜的,但其句法卻很簡單。位於網路管理工作站 執行管理程序 上和各網路元素上利用snmp相互通訊對網路進行管理的軟體統統稱為snmp應用實體。若干個應用實體和snmp...