日韩在线免费播放-日韩在线免费av-日韩在线免费-日韩在线毛片-国产高清不卡视频-国产高清不卡

當(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      來源:未知

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

【1】共用體

(1)共用體的概念

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

共用體在定義、說明和使用形式上與結(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)無意義了。

在程序中經(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)見科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號(hào)-5京公海網(wǎng)安備11010802025203號(hào)

回到頂部

主站蜘蛛池模板: 美国禁忌1984| 生死搏斗| 金璐莹| 唐人街探案四免费观看| 《求知报》答案| 91精品在线视频播放| 瑞恩高斯林| 整容前后| 假面骑士响鬼| 如果云知道歌词| 陈瑞的情债| 今日航班一览表| 以家人之名小说原著| 挨饿游戏| 李洋个人资料照片| 青岛啤酒价格| 电影电车| 谭耀文演的电影| 日韩在线激情| 买下我完整版电影免费观看| 天下无贼果宝特攻| 贝加尔湖畔指弹吉他谱| 大胆艺术| 红岩下的追捕电视剧| 梦想建筑师泰国百合剧| 重点监管的危险化工工艺| 杨国| 1988年英国的白蛇传说| 郭明翔| 男操男视频网站| 妻子的秘密免费观看全集| 电视剧《反击》主要演员| 电影《瞬间》| 挠tk| 天与地越南战争在线观看免费 | 小救星小渡| 转正意见评语| 伤残等级1-10标准图| 贤妻良母电影经典片| 普及的意思三年级下册语文| 一二三年级的童话绘画|