1樓:泠月冰辰
簡單的說:
結構體中每一個成員都有自己的記憶體空間。因此,結構體總大小一般情況下等於各成員大小之和(先不考慮記憶體對齊)。
共用體又叫聯合體,每一個成員都共享記憶體空間。因此,共用體大小等於成員中最大的那個大小。
結構體我就不說了,它用處很廣,最常見的是用它儲存一個記錄。例如,學生管理程式中,一個學生的資訊。
共用體,我看見很少人會用,就不得不說說了,其實,共用體有很多妙用,用好了,會帶來意想不到的效果。
如果光用共用體,那麼實用性會減少很多,通常和結構體一起使用。
如下題目:
輸入一個long,檢視它的高位數和低位數。
一般人可能會去移位,但是,如果是用結構體共用體,那麼這題根本就是小兒科。 完全可以賦值,輸出就ok了。
解決這題可以設計這樣的結構。
union uq1 bit;
};整個共用體還是4位元組沒有改變. 解決那題,就象這樣:
uq1 u;
long v;
v=0x00ff00ff; /*就先假設輸入的數是這個*/
u.value=v;
這題的結果應該是:
high=255,low=255
怎麼樣這就把移位操作避免了..
在c語言中,結構體和共用體的概念和兩者的區別是什麼啊?
在c語言裡面,共用體和結構體的區別是什麼?
c語言裡面的聯合體和結構體有什麼區別,分別是什麼含義?感覺都是一樣的,都是類的不同特性
2樓:匿名使用者
聯合體與結構體是copy很容易混淆的概念。粗略一看,兩者無論宣告、定義還是定義物件的方式都很相似。然而這兩個東西的概念和作用實際千差萬別。
首先,聯合體的各個成員共用記憶體,並應該同時只能有一個成員得到這塊記憶體的使用權(即對記憶體的讀寫),而結構體各個成員各自擁有記憶體,各自使用互不干涉。所以,某種意義上來說,聯合體比結構體節約記憶體。
舉個例子:
typedef struct
a;typedef union
u;sizeof(a)的值是8,sizeof(u)的值也是8(不是12)。
為什麼sizeof(u)不是12呢?因為union中各成員共用記憶體,i和j的記憶體是同一塊。而且整體記憶體大小以最大記憶體的成員的劃分。
即u的記憶體大小是double的大小,為8了。sizeof(a)大小為8,因為struct中i和j各自得到了一塊記憶體,每人4個位元組,加起來就是8了。
瞭解了聯合體共用記憶體的概念,也就是明白了為何每次只能對其一個成員賦值了,因為如果對另一個賦值,會覆蓋了上一個成員的值。
3樓:匿名使用者
完全不一樣。復
例如:書包制;可以放置書本、筆盒bai、記事本du等物。
聯合體,僅zhi能放入一樣東dao
西的包(限制),其尺寸,是可放物品中,最大一件的體積。
結構體,是能放入所有物品的包,所以其尺寸,可同時容納多樣物品。
聯合體,同時間只能有一個成員在內。或是說,可以用不同型態,去看同一組資料。
結構體,可以包含多個成員在一起,成員都能個別操作。
在c語言裡面,共用體和結構體的區別?
4樓:匿名使用者
結構體與共來用體
1.結構源體(struct)
定義:結構體是由一系列具有相同資料型別或不同資料型別的資料構成的資料集合。
例子:struct student
;2.共用體(union)
定義:union維護足夠的空間來放置多個資料成員中的「一種」,而不是為每一個資料成員配置 空 間,
在union中所有的資料成員公用一個空間,同一時間只能儲存其中的一個資料成員,所有的成員具有相同的起始地址。
例子:union data
大小為4個位元組。
可見二者最大的區別就是所佔用的記憶體,一個是分量記憶體之和,另外一個是等於最大的分量的記憶體。
5樓:匿名使用者
共用體所佔的記憶體是這個共用體中最大佔用記憶體的那一個,而結構體是所有成員所佔的記憶體總和
6樓:匿名使用者
一句話 結構體在沒呼叫它的時候不佔記憶體
共用體佔
7樓:牧赫班經亙
結構體(structure)是一個抄或多個相同資料bai類du型或不同資料型別
的變數集合在一個zhi名稱下的使用者自定義資料型別dao共用體是在同一儲存空間上存不同型別的資料,用於節省空間而c語言中的函式和高中數學的函式是不同的,數學中的函式是一個具體的解析表示式;而c語言中的函式是實現某一功能的一段**
c語言程式中的結構體與共用體具體是真麼一回事?如何定義與使用?有什麼區別?求詳解! 40
8樓:匿名使用者
下面是結構
bai體,就是把變數du集合在一起,包含多zhi個變數,同時存在struct point
dao;
共用體回是答幾種不同型別的變數存放到同一段記憶體單元中。使用覆蓋技術,幾個變數互相覆蓋。這種幾個不同的變數共同佔用一段記憶體的結構。
union data
a,b,c;
共用體變數中起作用的成員是最後一次存放的成員,在存入一個新成員後,原有成員就失去作用。
9樓:木木太歲
舉個簡單的bai例子,結du構體可以用於描述動zhi物:有名字、體重、dao
體長等不同型別的版變數,和吼叫、進食權睡眠等函式,這些存進去以後想用哪個用哪個;而共用體則可以用於描述物種:將靈長類、爬行類、鳥類等等不同型別變數都放進一個共用體裡,一個動物如果是靈長類就不可能是爬行類,是爬行類就不可能是鳥類,如果你最後定它是鳥類,再用它的時候就絕不會是靈長類或爬行類,只會是你最後一次定義的鳥類,但是你往裡存的時候什麼類都可以往裡存,雖然同一時間只存在一個。
定義的語法都差不多,識別符號跟名稱跟大括號括起的內容,使用時再用標示符跟名稱跟變數名
c中結構體型別與共用體型別變數的不同點是什麼
10樓:匿名使用者
最大的區別是他們對記憶體的佔用。結構體中的每個元素,都會按照資料型別的大小在記憶體中分配儲存空間,結構體所佔用的記憶體空間是其中所有元素所佔用的記憶體空間的和,是一個固定的數值。共用體變數所佔用的記憶體空間的大小是由所有元素中佔用空間最大的元素決定的,他們共用這個空間。
其次,結構體中的元素可以同時存在,而在共用體變數中,在某一時刻,只能有共用體中的一個變數存在。
C 類和結構體有什麼區別,C 中共用體 結構體和類的區別
c c 結構體的區別 c中的結構體和c 中結構體的不同之處 在c中的結構體只能自定義資料型別,結構體中不允許有函式,而c 中的結構體可以加入成員函式。c 中的結構體和類的異同 一 相同之處 結構體中可以包含函式 也可以定義public private protected資料成員 定義了結構體之後,可...
結構體指標陣列與結構體陣列有什麼不同
a是一個結構體陣列,已經有100個節點了。不需要再分配空間了。b是一個結構體變數,也已經有空間了,就和int b 已經有空間了一樣。c是一個指標陣列,c也已經有空間了,有3個元素,但是這三個元素是還沒有分配空間的指標,所以要用malloc分別為他們分配記憶體。d是一個結構體指標,和int d 一樣還...
cc類和結構體的差別,C C 類和結構體的差別
豆哥的每一天 c c 類和結構體的的區別 1 結構體基本用在很多資料,需要一個結構體來封裝這些資料。而類的話,是物件導向的思想,可以有很多介面讓人呼叫,私有變數等外部不能呼叫,還有保護型別的變數。2 結構體也可以被認為是一種特殊的類,它不存在任何函式,構造和解構函式也沒有,而且是一個公共的的類。3 ...