国产成人精品三级麻豆,色综合天天综合高清网,亚洲精品夜夜夜,国产成人综合在线女婷五月99播放,色婷婷色综合激情国产日韩

當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 學(xué)習(xí)筆記 > 嵌入式學(xué)習(xí)筆記:c語(yǔ)言共用體和結(jié)構(gòu)體的區(qū)別

嵌入式學(xué)習(xí)筆記:c語(yǔ)言共用體和結(jié)構(gòu)體的區(qū)別 時(shí)間:2018-09-06      來(lái)源:未知

c++中,結(jié)構(gòu)體(struct)和共用體(union)是比較相似的復(fù)合數(shù)據(jù)類型,這兩個(gè)都是用來(lái)存儲(chǔ)多種數(shù)據(jù)的,但是他們之間還是有很大差距的,一起來(lái)了解

【1】共用體

(1)共用體的概念

在 C 語(yǔ)言中,不同數(shù)據(jù)類型的數(shù)據(jù)可以使用共同的存儲(chǔ)區(qū)域,這種數(shù)據(jù)構(gòu)造類型稱為共用體,簡(jiǎn)稱共用,又稱聯(lián)合體。

共用體在定義、說(shuō)明和使用形式上與結(jié)構(gòu)體相似。兩者本質(zhì)上的不同僅在于使用內(nèi)存的方式上。

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

union 共用體名

{

成員表列;

};

例如:

union gy

{

int i; char c; float f;

};

這里定義了一個(gè)共用體類型 union gy,它由三個(gè)成員組成,這三個(gè)成員在內(nèi)存中使用共同的存儲(chǔ)空間。

由于共用體中各成員的數(shù)據(jù)長(zhǎng)度往往不同,所以共用體變量在存儲(chǔ)時(shí)總是按其成員中數(shù)據(jù)長(zhǎng)度最大的成員占用內(nèi)存空間。

在這一點(diǎn)上共用體與結(jié)構(gòu)體不同,結(jié)構(gòu)體類型變量在存儲(chǔ)時(shí)總是按各成員的數(shù)據(jù)長(zhǎng)度之和占用內(nèi)存空間。

例如,定義了一個(gè)結(jié)構(gòu)體類型:

struct gy

{

int i;

char c;

float f;

};

則結(jié)構(gòu)體類型 struct gy 的變量占用的內(nèi)存大小為 2+1+4=7 個(gè)字節(jié)(不考慮字節(jié)對(duì)齊)。

在使用共用體類型變量的數(shù)據(jù)時(shí)要注意:在共用體類型變量中起作用的成員是最后一次存放的成員,

在存入一個(gè)新的成員后原有的成員就失去作用。如有以下賦值語(yǔ)句:

a.i = 1;

a.c = ’a’;

a.f = 1.5;

完成以上三個(gè)賦值運(yùn)算以后,a.f 是有效的,a.i 和 a.c 已經(jīng)無(wú)意義了。

在程序中經(jīng)常使用結(jié)構(gòu)體與共用體相互嵌套的形式。

即共用體類型的成員可以是結(jié)構(gòu)體類型,或者結(jié)構(gòu)體類型的成員是共用體類型。

例如,下列結(jié)構(gòu)體類型 datas 的第三個(gè)成員是共用體類型:

struct datas

{

char *ps;

int type;

union

{

float fdata;

int idata;

char cdata;

}udata;

};

【2】typedef

(1)在 C 語(yǔ)言中,允許使用關(guān)鍵字 typedef 定義新的數(shù)據(jù)類型

其語(yǔ)法如下:

typedef

<已有數(shù)據(jù)類型>

<新數(shù)據(jù)類型>;

如:

typedef int INTEGER;

這里新定義了數(shù)據(jù)類型 INTEGER, 其等價(jià)于 int

INTEGER i; <==> int i;

(2) 在 C 語(yǔ)言中經(jīng)常在定義結(jié)構(gòu)體類型時(shí)使用 typedef,例如

typedef

{

struct _node_

int data;

struct _node_ *next;

} listnode, *linklist;

這里定義了兩個(gè)新的數(shù)據(jù)類型 listnode 和 linklist。其中 listnode 等價(jià)于數(shù)據(jù)類型 struct _node_ 而 linklist 等價(jià)于 struct _node_ *

【3】

上一篇:嵌入式學(xué)習(xí)筆記:c語(yǔ)言結(jié)構(gòu)體的定義和使用

下一篇:嵌入式學(xué)習(xí)筆記:shell腳本變量詳解

熱點(diǎn)文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗(yàn)分享
熱點(diǎn)新聞推薦
前臺(tái)專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見(jiàn)科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號(hào)-5,京公海網(wǎng)安備11010802025203號(hào)

回到頂部