C語言的結構體和共同體的區別是什麼

2021-07-08 21:31:14 字數 1967 閱讀 5297

1樓:阿利葉麼緞

結構體(structure)是一種構造型別,它是由若干「成員」組成的。每一個成員可以是一個基本資料型別或者又是一個構造型別,而且每個成員的資料型別可以相同也可以不相同。共同體(union)將幾種不同的變數儲存在同一記憶體單元中,也就是使用覆蓋技術,幾個變數互相覆蓋,這種幾個不同的變數共同佔用一段記憶體的結構,可見二者最大的區別就是所佔用的記憶體,結構體(structure)所佔用的記憶體是分量記憶體之和,共同體(union)所佔用的記憶體是等於最大的分量的記憶體。

具體來說,結構體(structure)與共同體(union)主要有以下區別:

1.結構體(structure)與共同體(union)都是由多個不同的資料型別成員組成,

但在任何同一時刻,

共同體(union)中只存放了一個被選中的成員,

而結構體(structure)的所有成員都存在。在結構體(structure)中,各成員都佔有自己的記憶體空間,它們是同時存在的。一個結構體(structure)變數的總長度等於所有成員長度之和。

在共同體(union)中,所有成員不能同時佔用它的記憶體空間,它們不能同時存在。共同體(union)變數的長度等於最長的成員的長度。

2.對於共同體(union)的不同成員賦值,

將會對其它成員重寫,

原來成員的值就不存在了,

而對於結構體(structure)的不同成員賦值是互不影響的。

2樓:閆恆箕己

在實際問題中,一組資料往往具有不同的資料型別。例如,在學生登記表中,姓名應為字元型;學號可為整型或字元型;年齡應為整型;性別應為字元型;成績可為整型或實型。顯然不能用一個陣列來存放這一組資料。

因為陣列中各元素的型別和長度都必須一致,以便於編譯系統處理。為了解決這個問題,c語言中給出了另一種構造資料型別——「結構(structure)」或叫「結構體」。

它相當於其它高階語言中的記錄。「結構」是一種構造型別,它是由若干「成員」組成的。每一個成員可以是一個基本資料型別或者又是一個構造型別。

結構既是一種「構造」而成的資料型別,那麼在說明和使用之前必須先定義它,也就是構造它。如同在說明和呼叫函式之前要先定義函式一樣。

讓程式設計序的人自定義一個資料型別。 共用體是在同一儲存空間上存不同型別的資料,用於節省空間

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

在c語言中,結構體和共用體的概念和兩者的區別是什麼啊?

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

3樓:匿名使用者

結構體與共來用體

1.結構源體(struct)

定義:結構體是由一系列具有相同資料型別或不同資料型別的資料構成的資料集合。

例子:struct student

;2.共用體(union)

定義:union維護足夠的空間來放置多個資料成員中的「一種」,而不是為每一個資料成員配置 空 間,

在union中所有的資料成員公用一個空間,同一時間只能儲存其中的一個資料成員,所有的成員具有相同的起始地址。

例子:union data

大小為4個位元組。

可見二者最大的區別就是所佔用的記憶體,一個是分量記憶體之和,另外一個是等於最大的分量的記憶體。

4樓:匿名使用者

共用體所佔的記憶體是這個共用體中最大佔用記憶體的那一個,而結構體是所有成員所佔的記憶體總和

5樓:匿名使用者

一句話 結構體在沒呼叫它的時候不佔記憶體

共用體佔

6樓:牧赫班經亙

結構體(structure)是一個抄或多個相同資料bai類du型或不同資料型別

的變數集合在一個zhi名稱下的使用者自定義資料型別dao共用體是在同一儲存空間上存不同型別的資料,用於節省空間而c語言中的函式和高中數學的函式是不同的,數學中的函式是一個具體的解析表示式;而c語言中的函式是實現某一功能的一段**

C語言結構體名和結構體型別名有什麼區別

結構體型別名可以將不同型別的變數放在一起,應用很廣,具體應用可以拿本c語言的書看看。結構體名就是結構體變數的名字,與變數名類似 c 中結構體的char型別怎麼賦值?如果用baistring的話,要在開頭加上du include 然後struct worker 後邊就可以像你那麼dao直接賦值就行了。...

C語言結構體定義程式的修改和完善

c語言結構體定義 struct為結構體關鍵字,tag為結構體的標誌,member list為結構體成員列表,其必須列出其所有成員 variable list為此結構體宣告的變數。結構體是c語言中聚合資料型別 aggregatedatatype 的一類。結構體可以被宣告為變數 指標或陣列等,用以實現較...

C語言檔案操作中輸出結構體亂碼的問題

你的out.txt的內容是你自己打進去的,不是用fwrite寫進去的,而且你結構中還包含了,什麼的,如果你的內容是用fwrite寫進去的就可以用fread讀了,它們是要配合使用的。別取巧啦。struct student type stud size 問題在於它的內容比有效的內容大很多。所以讀入的時候...