C中結構體型別與共用體型別變數的不同點是什麼

2021-03-04 01:51:21 字數 4500 閱讀 8190

1樓:匿名使用者

結構體, 是一組資料的合集. 每個結構體成員擁有自己的獨立記憶體.

共用體, 是乙個資料, 可以被轉為不同型別. 所有共用體成員共同佔有相同區域.

所以,在不考慮對齊時, 結構體大小是所有成員佔空間之和.

共用體大小是佔空間最大的成員大小.

2樓:匿名使用者

最大的區別是他們對記憶體的佔用。結構體中的每個元素,都會按照資料型別的大小在記憶體中分配儲存空間,結構體所佔用的記憶體空間是其中所有元素所佔用的記憶體空間的和,是乙個固定的數值。共用體變數所佔用的記憶體空間的大小是由所有元素中佔用空間最大的元素決定的,他們共用這個空間。

其次,結構體中的元素可以同時存在,而在共用體變數中,在某一時刻,只能有共用體中的乙個變數存在。

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

3樓:阿俠

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

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

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

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

4樓:匿名使用者

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

union data d,e,f;

d.a=1;

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

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

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

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

5樓:阿俠

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

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

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

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

6樓:匿名使用者

結構體與共來用體

1.結構源體(struct)

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

例子:struct student

;2.共用體(union)

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

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

例子:union data

大小為4個位元組。

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

7樓:匿名使用者

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

8樓:匿名使用者

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

共用體占

9樓:牧赫班經亙

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

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

c中結構體型別與共用體型別變數的不同點是什麼

10樓:賓松蘭黎羅

你好!最大的區別是他們對記憶體的佔用。結構體中的每個元素,都會按回照資料型別的大小在記憶體中

答分配儲存空間,結構體所佔用的記憶體空間是其中所有元素所佔用的記憶體空間的和,是乙個固定的數值。共用體變數所佔用的記憶體空間的大小是由所有元素中佔用空間最大的元素決定的,他們共用這個空間。其次,結構體中的元素可以同時存在,而在共用體變數中,在某一時刻,只能有共用體中的乙個變數存在。

打字不易,採納哦!

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

11樓:匿名使用者

下面是結構

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

dao;

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

union data

a,b,c;

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

12樓:木木太歲

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

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

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

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

13樓:匿名使用者

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()

14樓:dt好難註冊啊

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

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

結構體型別的指標引用成員變數,給成員變數用scanf怎麼賦值?

15樓:**秀之紅

#include //加上標頭檔案

#define n 6

#include

#include

typedef struct

graph;

void main()

沒有錯誤,那 是警告,local variable 'ga' used without having been initialized 是說你沒有給 ga初始化回,如果

你沒有給指標分配空間的答話,輸入的值就不知道放在那裡了,所以輸入的時候,就給提示你xx.exe 已經停止工作了……

16樓:興弘懿那葛

你需要定義結構體型別的變數啊

例如:graph

a,*ga;ga=

&a;//ga指向a

scanf(.....,&(ga->x[i]...);

這樣才是可以的。

17樓:南霞輝雪珂

沒錯啊,編譯都通過了,會不會是你的編譯器的問題?

18樓:性天藍鄔音

ga是指標變數,沒有給它分配記憶體,可以用malloc函式

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

19樓:匿名使用者

共用體復

內各成員公用同一塊記憶體

空制間。

結構體中各成bai員具有相互du獨立的記憶體空間。zhiunion exp_uni

上面的a,b公用同一塊記憶體dao,4位元組。

struct exp_stu

上面的a,b具有獨立的記憶體空間,乙個exp_stu物件,佔8位元組空間。

結構體型別變數的引用,結構體變數的使用和引用

和其他型別變數的引用一樣呀,就是另外起乙個別名,兩者表示同乙個物件 實體 結構體變數的使用和引用 c語言,老師問了乙個問題 為什麼在定義結構體變數之前,必須先定義結構體型別?定義變數,就是在記憶體中申請空間,資料型別就與系統的約定,按照什麼樣的資料型別的儲存格式和計算邏輯對待。所以定義變數都需要指明...

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

結構體裡面的抄每乙個元素都佔有一定的記憶體空間。而共用體佔用其元素中最長的變數的那個型別的記憶體空間。其賦值是覆蓋式的,比如 union data d,e,f d.a 1 d.b 10000000000 前面都d.a 沒有意義了。d.c s 這樣定義後,前面的,a,b 都沒了。那麼只有d.c是有效的...

c語言定義結構體變數,C語言 定義結構體變數

首先,定義一個結構的一般形式為 struct結構名 成員表由若干個成員組成,每個成員都是該結構的一個組成部分。對每個成員也必須作型別說明,其形式為 型別說明符 成員名 成員名的命名應符合識別符號的書寫規定。例如 struct stu 在這個結構定義中,結構名為stu,該結構由4個成員組成。第一個成員...