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

2022-06-29 08:10:06 字數 3641 閱讀 3060

1樓:阿俠

首先你說的很對 共同體的確佔的記憶體要比結構體小結構體佔用的記憶體空間,是其元素,佔空間的總和,而共用體是,元素中佔用空間最大的元素的空間!所以共用體在空間開銷上要小一點!

但是既然是兩個不同的概念當然是不一樣的 要不就沒必要定義兩個名詞了其實在共用體所用的記憶體中已經寫入了資料!當使用其它元素時!上次使用的內容將被覆蓋. 也就是說他使幾個不同型別的變數共佔一段記憶體(相互覆蓋),每次只有一個能使用

結構體則不然, 每個成員都會有儲存空間的,可以一起用.內部變數間是相互獨立的,c中的結構體和c++裡的類很相像~~

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

2樓:阿俠

首先你說的很對 共同體的確佔的記憶體要比結構體小結構體佔用的記憶體空間內,是其元素,佔空間的總和容,而共用體是,元素中佔用空間最大的元素的空間!所以共用體在空間開銷上要小一點!

但是既然是兩個不同的概念當然是不一樣的 要不就沒必要定義兩個名詞了其實在共用體所用的記憶體中已經寫入了資料!當使用其它元素時!上次使用的內容將被覆蓋. 也就是說他使幾個不同型別的變數共佔一段記憶體(相互覆蓋),每次只有一個能使用

結構體則不然, 每個成員都會有儲存空間的,可以一起用.內部變數間是相互獨立的,c中的結構體和c++裡的類很相像~~

c語言結構體與共用體,簡單說說有何區別。。。

3樓:匿名使用者

結構體裡面的抄每一個元素都佔有一定的記憶體空間。而共用體佔用其元素中最長的變數的那個型別的記憶體空間。其賦值是覆蓋式的,比如:

union data d,e,f;

d.a=1;

d.b=10000000000; //前面都d.a 沒有意義了。

d.c='s'; //這樣定義後,前面的,a,b 都沒了。。

那麼只有d.c是有效的,其餘的都沒有意義啦。

結構體和共用體在c語言中是怎麼用的

4樓:螞蟻飛行記

結構體和共用體其實都是用來描述一組由不同型別變數的集合,也就是說結構體和共用體中都可以同時存在int型、char型、float型等等!!

但是不同的是,結構體內所定義的每一個變數都有其自己獨立的儲存空間,互不干涉,比如一個結構體中有一個int型、同時有一個char型,那麼它們是獨立的,總共佔用三個位元組空間。

而共用體內定義的每一個變數都共同享有同一個儲存空間,儲存空間的大小是佔用空間最大的那個一變數的大小。比如,我還是在裡面有一個int型和一個char型,那這個共用體就佔int型的2個位元組,加入我用共用體存入一個char型資料,我可以用int型來讀取,讀的是二進位制資料。

呵呵呵呵,c語言是很久以前學的了,不知道這點記憶對不對,但是希望能幫得到你。

5樓:

共用體用得很少,結構體用得較多

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

6樓:阿俠

首先bai你說的很對 共同體的確du佔的記憶體要比zhi結構體小

結構體佔用的內dao存空間,是其元素,佔空間的內總和,而共容用體是,元素中佔用空間最大的元素的空間!所以共用體在空間開銷上要小一點!

但是既然是兩個不同的概念當然是不一樣的 要不就沒必要定義兩個名詞了其實在共用體所用的記憶體中已經寫入了資料!當使用其它元素時!上次使用的內容將被覆蓋. 也就是說他使幾個不同型別的變數共佔一段記憶體(相互覆蓋),每次只有一個能使用

結構體則不然, 每個成員都會有儲存空間的,可以一起用.內部變數間是相互獨立的,c中的結構體和c++裡的類很相像~~

7樓:匿名使用者

結構體與共來用體

1.結構源體(struct)

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

例子:struct student

;2.共用體(union)

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

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

例子:union data

大小為4個位元組。

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

8樓:匿名使用者

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

9樓:匿名使用者

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

共用體佔

10樓:牧赫班經亙

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

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

共用體和結構體的區別

11樓:追尋複製者

一、變數長度不同

結構體變數所佔記憶體長度是各成員佔的記憶體長度之和,每個成員分別佔有其自己的記憶體單元。

共用體變數所佔的記憶體長度等於最長的成員的長度。

二、佔用空間不同

結構體是同時存在的,並一次佔用一段連續的記憶體空間;

而共用體則是多個共用成員佔用同一個開始的記憶體地址,同時他們只能存在一各,所以空間大小就是最大那個所需的空間,如果單從一個共用體來講,我們是不知道里面存的是什麼內容,需要根據程式上下文才能確定。

三、分配儲存空間不同

結構體是由一系列具有相同型別或不同型別的資料構成的資料集合,簡稱結構。在c語言中,可以定義結構體型別,將多個相關的變數包裝成為一個整體來使用。在結構體中的變數,可以是相同、部分相同,或完全不同的資料型別。

結構體型別的定義只是由使用者構造了一個結構體,但定義結構體型別時系統並不為其分配儲存空間。

12樓:阿俠

首先你說的很對 共同體的確佔的記憶體要比結構體小結構體佔用的記憶體空間,是其元素,佔空間的總和,而共用體是,元素中佔用空間最大的元素的空間!所以共用體在空間開銷上要小一點!

但是既然是兩個不同的概念當然是不一樣的 要不就沒必要定義兩個名詞了其實在共用體所用的記憶體中已經寫入了資料!當使用其它元素時!上次使用的內容將被覆蓋. 也就是說他使幾個不同型別的變數共佔一段記憶體(相互覆蓋),每次只有一個能使用

結構體則不然, 每個成員都會有儲存空間的,可以一起用.內部變數間是相互獨立的,c中的結構體和c++裡的類很相像~~

13樓:匿名使用者

共用體的成員共用一塊記憶體區,結構體的成員有個自獨立的記憶體區。

所以,共用體的成員,對一個進行修改就會影響別的成員的值,而結構體則不會。

14樓:匿名使用者

共用體是構造資料型別,也叫聯合體

它使幾個不同型別的變數共佔一段記憶體(相互覆蓋),每次只有一個能使用.

結構體則不然, 每個成員都會有儲存空間的,可以一起用.

15樓:匿名使用者

結構體所佔用的記憶體空間為其成員所需空間總和

而共用體所佔用的空間只為其所需記憶體最大的成員的記憶體。

c語言結構體別名定義問題,C語言結構體別名定義問題

typedef struct stu linklist 此處第一了一個型的型別,即struct stu 即指向結構體stu的指標 所以head的型別也就是struct stu head為一個指向stu結構體型別的指標。但是並沒有未其分配具體的空間。可以將一個已定義為stu結構體的指標賦給它。c語言給...

c語言結構體程式設計題,求大神,C語言結構體程式設計題,求大神!

根據題意 一 教師資訊定義為結構體,其成員年月也為結構體 可直接定義成兩個成員變數,本題沒有強制要求 婚姻狀態採用共用體型別。二 輸入資訊直接寫在main函式,實際軟體開發應單獨寫輸入函式,輸入驗證我只寫了性別和婚姻狀態的驗證,其餘成員的輸入驗證需要自己新增。實際開發,驗證也應單獨寫函式呼叫 三 輸...

C語言結構體Struct怎麼使用

left,right 是指向結構體的指標,這個結構體可以當做雙向連結串列來用。left指向指向連結串列的前驅,right指向後繼。tshort balance tshort number 外部可用來儲存16位值 tuint value 外部可用來儲存32位值 這3個就是連結串列儲存成員。c語言結構體...