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

2021-04-14 05:49:59 字數 3070 閱讀 3609

1樓:匿名使用者

結構體與共來用體

1.結構源體(struct)

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

例子:struct student

;2.共用體(union)

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

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

例子:union data

大小為4個位元組。

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

2樓:匿名使用者

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

3樓:匿名使用者

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

共用體佔

4樓:牧赫班經亙

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

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

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

c語言程式設計中的結構體共用體分別指什麼?能否具體說明?如何定義?有什麼區別?

5樓:匿名使用者

struct

p;佔兩個整型記憶體來空間

源;p.a=3;

p.b=5;

列印輸出 p.a=3,p.b=5

union

s;s,a=3;

s.b=5;

列印輸出 s.a=5,s.b=5

佔一個整型記憶體空間

a.值被b覆蓋了

測試程式 如下,你可以試一下,最好看書,這麼簡單的問題,書上能查到。不要太懶了

#include

struct test

;union pick

;int main()

6樓:dt好難註冊啊

結構體 一個資料型別包含多個資料型別的集

共用體 常與結構體混用 可以將結構體中的某個屬性用不同的資料型別表示

c語言程式中的結構體與共用體具體是真麼一回事?如何定義與使用?有什麼區別?求詳解! 40

7樓:匿名使用者

下面是結構

bai體,就是把變數du集合在一起,包含多zhi個變數,同時存在struct point

dao;

共用體回是答幾種不同型別的變數存放到同一段記憶體單元中。使用覆蓋技術,幾個變數互相覆蓋。這種幾個不同的變數共同佔用一段記憶體的結構。

union data

a,b,c;

共用體變數中起作用的成員是最後一次存放的成員,在存入一個新成員後,原有成員就失去作用。

8樓:木木太歲

舉個簡單的bai例子,結du構體可以用於描述動zhi物:有名字、體重、dao

體長等不同型別的版變數,和吼叫、進食權睡眠等函式,這些存進去以後想用哪個用哪個;而共用體則可以用於描述物種:將靈長類、爬行類、鳥類等等不同型別變數都放進一個共用體裡,一個動物如果是靈長類就不可能是爬行類,是爬行類就不可能是鳥類,如果你最後定它是鳥類,再用它的時候就絕不會是靈長類或爬行類,只會是你最後一次定義的鳥類,但是你往裡存的時候什麼類都可以往裡存,雖然同一時間只存在一個。

定義的語法都差不多,識別符號跟名稱跟大括號括起的內容,使用時再用標示符跟名稱跟變數名

c語言裡面的聯合體和結構體有什麼區別,分別是什麼含義?感覺都是一樣的,都是類的不同特性

9樓:匿名使用者

聯合體與結構體是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了。

瞭解了聯合體共用記憶體的概念,也就是明白了為何每次只能對其一個成員賦值了,因為如果對另一個賦值,會覆蓋了上一個成員的值。

10樓:匿名使用者

完全不一樣。復

例如:書包制;可以放置書本、筆盒bai、記事本du等物。

聯合體,僅zhi能放入一樣東dao

西的包(限制),其尺寸,是可放物品中,最大一件的體積。

結構體,是能放入所有物品的包,所以其尺寸,可同時容納多樣物品。

聯合體,同時間只能有一個成員在內。或是說,可以用不同型態,去看同一組資料。

結構體,可以包含多個成員在一起,成員都能個別操作。

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

11樓:匿名使用者

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

union data d,e,f;

d.a=1;

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

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

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

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

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

c語言裡複數結構體的定義,關於C語言的題目 用結構體定義一個複數,並實現複數的加法 減法和乘法。

1 首先我們開啟dev。2 我們給這個結構體取個名字叫student。3 然後我們新增變數。4 給結構體型別指標p申請堆空間。5 使用for迴圈給結構體賦值。6 在通過for迴圈列印輸出,這樣就完成就結構體的基本建立,結尾不要忘了使用free p 釋放我們申請的堆空間。結構體型別變數的定義與其它型別...

C語言指向這個結構體為什麼要加,C語言,指向結構體成員運算子是什麼意思?

這個 是 取的 data value mutex 的 地址,即 data 中的 value mutex 的地址,因為 c 語言中 比 優先順序高.你哪隻眼睛 看見data指向nmma7660 client 型別結構體變數了?struct nmma7660 data data 這只是定義了一個 指向結...