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

2021-07-08 21:31:15 字數 1967 閱讀 5253

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語言結構陣列初始化的問題

定義成struct list 試試呢?struct list creat char name,int priority,int time 同學,你注意到了create 函式裡面,你又定義了一句 list pr 了麼?這句話時關鍵,首先,你在main 函式 我猜應該是main吧 中寫道 list pr...

C語言程式設計,C語言和C語言的區別是什麼?

include using namespace std int main if a max x max y 值 int main system pause return 0 c語言和c 語言的區別是什麼?c語言與c 的區別有很多 1,全新的程式程式思維,c語言是程序導向的,而c 是物件導向的。2,c...

C語言中記憶體堆和棧的區別是什麼

給你寫個小例子說明吧,一個小函式。void testfunction 上面函式中,變數a的記憶體就在棧中,a的生命週期只在大括號內,出了testfunction的大括號這塊棧空間就被釋放了。而上面函式通過呼叫malloc函式給pa分配了3 sizeof int 個位元組長度的記憶體,這段記憶體就在堆...