c語言中的共用體是什麼,在C語言裡面,共用體和結構體的區別是什麼?

時間 2021-05-05 16:31:45

1樓:四舍**入

共用體一般指聯合體,作用如下:

1、節省記憶體

有兩個很長的資料結構,不會同時使用,用結構體的話,只佔用最長的那個資料結構所佔用的空間,就足夠了。

2、做某些轉換用

union;

x=20.8;

2樓:楊塵一

在進行某些演算法的c語言程式設計的時候,需要使幾種不同型別的變數存放到同一段記憶體單元中。也就是使用覆蓋技術,幾個變數互相覆蓋。這種幾個不同的變數共同佔用一段記憶體的結構,在c語言中,被稱作「共用體」型別結構,簡稱共用體。

注:在某些書籍中可能稱之為「聯合體」,但是「共用體」更能反映該型別在記憶體的特點。

共用體型別資料的特點

1.同一個記憶體段可以用來存放幾種不同型別的成員,但是在每一瞬間只能存放其中的一種,而不是同時存放幾種。換句話說,每一瞬間只有一個成員起作用,其他的成員不起作用,即不是同時都在存在和起作用。

2.共用體變數中起作用的成員是最後一次存放的成員,在存入一個新成員後,原有成員就失去作用。

3.共用體變數的地址和它的各成員的地址都是同一地址。

4.不能對共用體變數名賦值,也不能企圖引用變數名來得到一個值。

5.共用體型別可以出現在結構體型別的定義中,也可以定義共用體陣列。反之,結構體也可以出現在共用體型別的定義中,陣列也可以作為共用體的成員。

3樓:google也知道

所謂共用體型別是指將不同的資料項組織成一個整體,它們在記憶體中佔用同一段儲存單元。其定義形式為:

union 共用體名

;union data

obj;

該形式定義了一個共用體資料型別union data ,定義了共用體資料型別變數obj。共用體資料型別與結構體在形式上非常相似,但其表示的含義及儲存是完全不同的。先讓我們看一個小例子。

union data /*共用體*/

mm;struct stud /*結構體* /

;main( )

執行程式輸出:

15,8

程式的輸出說明結構體型別所佔的記憶體空間為其各成員所佔儲存空間之和。而形同結構體的共用體型別實際佔用儲存空間為其最長的成員所佔的儲存空間。

對共用體的成員的引用與結構體成員的引用相同。但由於共用體各成員共用同一段記憶體空間,使用時,根據需要使用其中的某一個成員。從圖中特別說明了共用體的特點,方便程式設計人員在同一記憶體區對不同資料型別的交替使用,增加靈活性,節省記憶體。

可以引用共用體變數的成員,其用法與結構體完全相同。若定義共用體型別為:

union data /*共用體*/

mm;其成員引用為:mm.a,mm.b,mm.c,mm.d 但是要注意的是,不能同時引用四個成員,在某一時刻,只能使用其中之一的成員。

main( )

mm;mm.a=6;

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

mm.c=67.2;

printf("%5.1lf\n", mm.c);

mm.d='w';

mm.b=34.2;

printf("%5.1f,%c\n",mm.b,mm.d);

}執行程式輸出為:

66 7.2

3 4.2,=

程式最後一行的輸出是我們無法預料的。其原因是連續做mm.d='w';mm.

b=34.2;兩個連續的賦值語句最終使共用體變數的成員mm.b所佔四位元組被寫入34.

2,而寫入的字元被覆蓋了,輸出的字元變成了符號「 =」。事實上,字元的輸出是無法得知的,由寫入記憶體的資料決定。

例子雖然很簡單,但卻說明了共用體變數的正確用法。

4樓:淡若親風

共同體是指成員共同使用一段儲存區域,共同體佔用記憶體大小決定於所佔記憶體最大的那個成員,但是實際使用的記憶體會小於等於共同體所佔記憶體大小

5樓:

union

例如定義一個union

union s_un;

s_un s;

你可以用s.s_un_b, s.s_un_w, s_addr訪問實際上訪問的是同一塊記憶體區域,但由於資料型別不同,所以得到的結果可能不一樣。

修改其中一個資料,其他的資料都可能會改變。

union所佔的記憶體大小有最大的那個資料型別決定。

6樓:守望流逝的青春

struct ???

在c語言裡面,共用體和結構體的區別是什麼?

c 語言中n的意思是什麼,在c 語言中while(n 的意義是什麼?怎麼用?

n 不是換行,換行是 n,轉義字元是以 開頭,這個是 開頭的,如果樓主是 cout n 這種書寫,在vc 6.0中將會導致編譯器執行運算子過載的操作,經過無數的庫函式呼叫後,最終得到一個12142的數值,若樓主採用cout n 21.1111這種格式的寫法,由於沒有換行操作,將會在21前面加上一個1...

在C語言中是什麼意思,C語言中 c 是什麼意思?

勢如雲 這是c語言的邏輯運算子 異或 這個 講的非常詳細,我摘抄了一些,詳細的你看以看看。有很例子,好懂!邏輯運算子把各個運算的變數 或常量 連線起來組成一個邏輯表示式。邏輯運算子有4個,它們分別是 邏輯非 邏輯或 邏輯與 異或 在位運算裡面還有 位與 位或 的運算。什麼是邏輯運算 邏輯運算用來判斷...

c語言是什麼,「 」在c語言中是什麼意思?

1 c是高階語言。它把高階語言的基本結構和語句與低階語言的實用性結合起來。c 語言可以像組合語言一樣對位 位元組和地址進行操作,而這三者是計算機最基本的工作單元。2 c是結構式語言。結構式語言的顯著特點是 及資料的分隔化,即程式的各個部分除了必要的資訊交流外彼此獨立。這種結構化方式可使程式層次清晰,...