共用體的定義與應用詳細解析

2022-10-04 04:54:11 字數 1474 閱讀 5799

定義:

使用覆蓋技術,幾個變數相互覆蓋,從而使幾個不同變數共占同一段記憶體的結構,成為共同體型別的結構。www.cppcns.com

共同體的定義類似結構體,不過共同體的所有成員都在同一段記憶體中存放,起始位址一樣,並且同一時刻只能使用其中的乙個成員變數。

宣告共用體的一般形式為:

複製** **如下:

union 共用體型別名

;定義共用體變數的一般形式為:

共用體型別名   共用體變數名;

例如:複製** **如下:

union data;

data a,b,c;

或者複製** **如下:

union;

data a,b,c;

結構體變數所佔長度是各成員佔的記憶體長度之和。每個成員分別占有自己的記憶體單元。共用體變數所佔的記憶體長度等於最長的成員的長度。

共用體的使用

1.不能應用共用體變數,而只能引用共用體變數中的成員。

例如:複製** **如下:

cout

2.使用共用體變數的目的是希望通過統一記憶體段存放幾種不同型別的資料。

但是要注意,每一瞬間只能存放一種,而不是存放集中。並且,如果對新的成員變數的話,原來的成員變數的值就被覆蓋了。

複製** **如下:

#include

using namespace std;

int main();

data qianshou;

qianshou.a='q';

cout

cout

}後來,我們對共用體中的成員b進行了賦值,結果我們輸出的是成員a,輸出的是b的值,所以證明它們是公用位址的。

3.不能對共用體變數名賦值,不能企圖引用變數名來得到乙個值;不能在定義共用體變數時對它初始化,不能用共用體變數名作為函式引數。

乙個共同體的例項:

設有若干個人員的資料,其中有學生和老師。學生的資料報括:姓名,編號,性程式設計客棧別,職業,年級。老師的資料報括:姓名,編號,性別,職業,職務。可以看出,學生和老師所包含的資料是不同的。先要求把他們放在同乙個**中:

要求設計程式輸入人員資訊然後輸出。

如果把每個人都看作乙個結構體變數的話,可以看出老師和學生的前4個成員變數是一樣的,並且第五個成員變數可能是class或者position,當第四個成員變數是s的時候,第五個成員變數就是class;當程式設計客棧第四個成員變數是t的時候,第五個成員變數就是position。

複製** **如下:

#include

#include

using namespace std;

int main()p;//定義了乙個共同體變數

}person[2];//定義了乙個結構體陣列變數

int i=0;

cout

i=0;

cout

cout

}本文標題: 共用體的定義與應用詳細解析

本文位址: /ruanjian/c/99337.html

列舉 共用體 typedef與巨集定義

c 語言列舉型別 實際問題中,有些變數的取值被限制在一定範圍內。例如,乙個星期內只有七天,一年 只有十二個月,乙個班每週有六門課程等。c 語言提供了一種列舉 enum 型別,可以列出所有可能的取值。定義形式為 enum 變數名 這些值也稱為列舉元素。注意最後的分號 不能少。例如,列出乙個星期有幾天 ...

共用體的定義和使用

在 c 語言中,允許幾種不同型別的變數存放到同一段記憶體單元中,也就是使用覆蓋技術,幾個變數互 相覆蓋。這種幾個不同的變數共同占用一段記憶體的結構,被稱為共用體型別結構,簡稱共用體。一般定義 形式為 union 共用體名 變數名表列 只有先定義了共用體變數,才能在後續的程式中引用它。不能直接引用共用...

字元陣列的定義與使用詳細解析

用來存放字元量的陣列稱為字元陣列。形式數值陣列相同。例如 char c 10 由於字元型和整型通用,也可以定義為int c 10 但這時每個陣列元素佔2個位元組的記憶體單元。字元陣列也可以是二維或多維陣列。例如 char c 5 10 即為二維字元陣列。第一種方法是分別對每乙個元素進行賦值操作 字元...