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

時間 2021-07-08 21:30:46

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語言中的函式是實現某一功能的一段**

人類命運共同體的內涵和意義

內涵 1 不同國家和國家集團之間為爭奪國際權力發生了數不清的戰爭與衝突。隨著經濟全球化深入發展,資本 技術 人員跨國流動,國家之間處於一種相互依存的狀態,一國經濟目標能否實現與別國的經濟波動有重大關聯。2 人類社會是乙個相互依存的共同體已經成為共識。國際社會發生的如1997年亞洲金融危機 2008年...

C語言與C 結構體的區別,C語言和C 語言的區別是什麼?

c語言的結構就是值型別,跟int,char沒有什麼區別 c 的結構跟類已經非常接近了,就是如果不具體說明,預設為共有 比如說這個結構體吧.struct mystruct str 在c 裡可以這樣用 mystruct s1 mystruct 就是一個型別,在c裡只能這樣用其 struct mystru...

c語言結構體中的陣列怎麼賦值,C語言,結構體中的陣列怎麼賦值,?

念憶 intmain void printf d,s n bao.id,bao.name 輸出是4224528,空 應該是null structstudentsbao 可以。第一種賦值方法 strcpy bao.name,bao 可以,printf d,s n bao.id,bao.name bao...