久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 學習筆記 > 嵌入式(shi)學習(xi)筆記:c語言(yan)共用(yong)體和(he)結構體的區(qu)別

嵌入式學習筆記:c語言(yan)共用體(ti)和結構體(ti)的區別(bie) 時間(jian):2018-09-06 ;     來源:未(wei)知

c++中(zhong),結構(gou)體(ti)(ti)(struct)和共(gong)用(yong)體(ti)(ti)(union)是比較相似的(de)復(fu)合數據類型,這兩(liang)個都是用(yong)來(lai)存儲多種數據的(de),但是他們(men)之(zhi)間還是有很(hen)大差距(ju)的(de),一起來(lai)了解(jie)

【1】共用體

(1)共(gong)用(yong)體的概念

在 C 語言中,不同(tong)數據類型的數據可以使用共同(tong)的存儲(chu)區域(yu),這種數據構(gou)造類型稱(cheng)為共用體(ti),簡稱(cheng)共用,又稱(cheng)聯合體(ti)。

共用體(ti)在(zai)定義、說明和使用形式(shi)上(shang)與結構(gou)體(ti)相似(si)。兩(liang)者本質上(shang)的(de)不同僅在(zai)于使用內存的(de)方式(shi)上(shang)。

定義一個(ge)共用體類型的一般形(xing)式為:

union 共用體名

{

成員表列;

};

例如:

union gy

{

int i; char c; float f;

};

這里(li)定義了(le)一個(ge)共(gong)用體類(lei)型 union gy,它由(you)三個(ge)成(cheng)員(yuan)組成(cheng),這三個(ge)成(cheng)員(yuan)在內存中(zhong)使用共(gong)同的存儲空間。

由(you)于共(gong)用(yong)(yong)(yong)體中各成(cheng)(cheng)員的(de)數據長度往往不同,所以(yi)共(gong)用(yong)(yong)(yong)體變量在存儲時(shi)總是按(an)其成(cheng)(cheng)員中數據長度最大(da)的(de)成(cheng)(cheng)員占用(yong)(yong)(yong)內(nei)存空間。

在這一點上共(gong)用(yong)體(ti)與結構體(ti)不同,結構體(ti)類型變量在存儲時(shi)總是按各成員的數據長度之和(he)占用(yong)內存空間。

例(li)如,定義了一個結(jie)構(gou)體類(lei)型:

struct gy

{

int i;

char c;

float f;

};

則結構體類型 struct gy 的變量占用的內存大小為 2+1+4=7 個字節(不考慮(lv)字節對齊)。

在使用(yong)共(gong)用(yong)體(ti)類型變量的(de)數(shu)據時要注(zhu)意:在共(gong)用(yong)體(ti)類型變量中起作用(yong)的(de)成員是(shi)最后(hou)一次存(cun)放的(de)成員,

在存入一個新的成員(yuan)后(hou)原有(you)的成員(yuan)就失去作用。如(ru)有(you)以下(xia)賦(fu)值(zhi)語句:

a.i = 1;

a.c = ’a’;

a.f = 1.5;

完(wan)成以上三個賦值運算以后,a.f 是有效的,a.i 和 a.c 已經無意義了。

 在程序中經常使(shi)用結構(gou)體與(yu)共用體相互嵌(qian)套的形(xing)式(shi)。

即共用體類(lei)(lei)型的成員可(ke)以是(shi)結構體類(lei)(lei)型,或(huo)者(zhe)結構體類(lei)(lei)型的成員是(shi)共用體類(lei)(lei)型。

例如,下列結(jie)構體類型 datas 的第三個(ge)成員是(shi)共用(yong)體類型:

struct datas

{

char *ps;

int type;

union

{

float fdata;

int idata;

char cdata;

}udata;

};

【2】typedef

(1)在 C 語言(yan)中,允許(xu)使用關鍵字 typedef 定義新(xin)的數據類型

其語(yu)法如下:

typedef

<已有(you)數據類(lei)型>

<新數據類型>;

如:

typedef int INTEGER;

這(zhe)里新定義了數據類型 INTEGER, 其(qi)等價(jia)于 int

INTEGER i; <==> int i;

(2) 在 C 語(yu)言中經常在定義結構體(ti)類型時使用(yong) typedef,例如

typedef

{

struct _node_

int data;

struct _node_ *next;

} listnode, *linklist;

 這里(li)定義了兩個新的數據(ju)類型 listnode 和 linklist。其中 listnode 等(deng)價于數據(ju)類型 struct _node_ 而 linklist 等(deng)價于 struct _node_ *

【3】

上一篇:嵌入式學習筆記:c語言結構體的定義和使用

下一篇:嵌入式學習筆記:shell腳本變量詳解

熱點文章推(tui)薦
華清學(xue)員就業(ye)榜(bang)單
高薪學員經驗分享
熱點(dian)新(xin)聞推薦
前臺專線:010-82525158 企業培訓洽談(tan)專線:010-82525379 院(yuan)校合作洽(qia)談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部