亚洲精品一二区_国产黄色片网站_99久久久成人国产精品_蜜臀网_国产精品一区二区三区免费_成人av中文字幕_91精品国产欧美一区二区成人

當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 學(xué)習(xí)筆記 > 嵌入式學(xué)習(xí)筆記:c語言結(jié)構(gòu)體定義和使用

嵌入式學(xué)習(xí)筆記:c語言結(jié)構(gòu)體定義和使用 時(shí)間:2018-09-12      來源:未知

定義

1)結(jié)構(gòu)體是一種構(gòu)造數(shù)據(jù)類型

2)把不同類型的數(shù)據(jù)組合成一個(gè)整體來自定義數(shù)據(jù)類型

8.2創(chuàng)建結(jié)構(gòu)體類型

struct 結(jié)構(gòu)體類型名 {

類型 成員1名;

類型 成員2名;

...

類型 成員3名;

};

解釋:

類型 : 任何學(xué)過的類型

成員x名: 標(biāo)識(shí)符

注意:1.成員名和最后都有 ; 號(hào)

2.創(chuàng)建結(jié)構(gòu)體類型本身并沒有分配任何存儲(chǔ)空間,用它定義變量的時(shí)候才分配空間

8.3創(chuàng)建結(jié)構(gòu)體變量

8.3.1 利用已經(jīng)創(chuàng)建的類型創(chuàng)建:struct 結(jié)構(gòu)體類型名 結(jié)構(gòu)體變量名;

例子:

8.3.2創(chuàng)建類型同時(shí)創(chuàng)建變量

struct 結(jié)構(gòu)體類型名 {

類型 成員1名;

類型 成員2名;

...

類型 成員3名;

} 結(jié)構(gòu)體變量名;

例子:

8.4結(jié)構(gòu)體類型和變量定義形式

8.4.1一般形式

 

8.4.2匿名結(jié)構(gòu)體

 

注意:這種形式一般用在結(jié)構(gòu)體和聯(lián)合體中會(huì)比較方便。

8.4.3 define

 

8.4.4 typedef(起別名)

 

(常用)

作用:

(1)可以避免一些人理解的錯(cuò)誤

例:char *a,b;

(2)用在結(jié)構(gòu)體上帶來方便

(3)在一些很復(fù)雜的類型可以使用typedef起別名來帶來方便

(4)用typedef來定義與平臺(tái)無關(guān)的類型

typedef int BOOL

8.5計(jì)算結(jié)構(gòu)體變量的成員

結(jié)構(gòu)體變量名.成員名

(*結(jié)構(gòu)體變量指針).成員名

結(jié)構(gòu)體變量指針->成員名(重點(diǎn))

實(shí)例:

8.6計(jì)算結(jié)構(gòu)體和其變量字節(jié)數(shù)

sizeof(結(jié)構(gòu)體類型名)

sizeof(結(jié)構(gòu)體變量)

8.7結(jié)構(gòu)體變量賦值

注意: 變量類型必須相同

補(bǔ)充:給數(shù)組賦值用strcpy

 

8.8結(jié)構(gòu)體變量初始化

8.8.1 普通變量

例: struct student student = {"zhangsan", 1, 15, 59.9};

8.8.2 結(jié)構(gòu)體數(shù)組

(1) 按結(jié)構(gòu)初始化

例:struct student stu[3]={{"zhangsan", 1, 15},{"lishi", 0, 16}};

(2) 按順序初始化

例:struct student stu[] = {"zhangsan", 1, 15, "lishi", 0, 16};

實(shí)例:

8.9變量對(duì)齊

8.9.1 變量對(duì)齊

變量地址 % min(變量字節(jié)數(shù), 機(jī)器位數(shù)/8) = 0

8.9.2 結(jié)構(gòu)體成員變量對(duì)齊

結(jié)構(gòu)體成員變量地址 % min(變量字節(jié)數(shù), 機(jī)器位數(shù)/8) = 0;

8.9.3 結(jié)構(gòu)體變量對(duì)齊

結(jié)構(gòu)體成員變量的最大對(duì)齊方式相同

8.9.4 結(jié)構(gòu)體成員變量偏移對(duì)齊

結(jié)構(gòu)體成員變量偏移 % min(變量字節(jié)數(shù), 機(jī)器位數(shù)/8) = 0;

補(bǔ)充:使用偽指令#pragma pack(n):C編譯器將按照n個(gè)字節(jié)對(duì)齊;

使用偽指令#pragma pack(): 取消自定義字節(jié)對(duì)齊方式。

例子:#pragma pack(2) //指定按2字節(jié)對(duì)齊

struct C

{

char b;

int a;

short c;

};

#pragma pack() //取消指定對(duì)齊,恢復(fù)缺省對(duì)齊

另外,還有如下的一種方式(GCC特有語法):

__attribute((aligned (n))): 讓所作用的結(jié)構(gòu)成員對(duì)齊在n字節(jié)自然邊界上。如果結(jié)構(gòu)體中有成員的長度大于n,則按照最大成員的長度來對(duì)齊。

__attribute__ ((packed)): 取消結(jié)構(gòu)在編譯過程中的優(yōu)化對(duì)齊,按照實(shí)際占用字節(jié)數(shù)進(jìn)行對(duì)齊。

8.10 共用體(聯(lián)合體)

union 共用體類型名 {

類型 成員名1;

類型 成員名2;

};

注意:共用體使用方法同結(jié)構(gòu)體完全相同,唯一區(qū)別在于:

1. 共用體各個(gè)成員共用內(nèi)存

2. 共用體變量的大小取決于其最大元素的大小

補(bǔ)充:計(jì)算機(jī)的大小端序:字節(jié)序就是變量在內(nèi)存中存放的方式。

大端序:字?jǐn)?shù)據(jù)的高字節(jié)存儲(chǔ)在低地址中。

數(shù)據(jù)0x12345678

-------------------------------------------

| 地址 | 0x4000 | 0x4001 | 0x4002 | 0x4003 |

-------------------------------------------

| 內(nèi)容 | 0x12 | 0x34 | 0x56 | 0x78 |

-------------------------------------------

小端序:字?jǐn)?shù)據(jù)的低字節(jié)存儲(chǔ)在低地址中。

數(shù)據(jù)0x12345678

-------------------------------------------

| 地址 | 0x4000 | 0x4001 | 0x4002 | 0x4003 |

-------------------------------------------

| 內(nèi)容 | 0x78 | 0x56 | 0x34 | 0x12 |

-------------------------------------------

8.11 枚舉類型

作用;給一組相關(guān)的字面常量取名, 并將它們定義為相同類型

用法:enum 枚舉類型名 {

常量名1,

常量名2,

...

};

注意:1. 沒有指定值時(shí), 常量名1 值取 0, 后面每個(gè)常量的值等于前面常量的值加1

2. 可以給常量指定值,讓它們從某一整數(shù)開始

上一篇:嵌入式學(xué)習(xí)筆記:C高級(jí)函數(shù)快速學(xué)

下一篇:嵌入式學(xué)習(xí)筆記; c指針詳解很詳細(xì),學(xué)霸總結(jié)

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

回到頂部

主站蜘蛛池模板: 日本三级日本三级日本三级极 | 人人插人人看 | 青青草伊人久久 | 人人搞人人| 全部免费特黄特色大片中国 | 手机看片99 | 欧美成人免费在线视频 | 欧美亚洲综合在线 | 精品一卡2卡三卡四卡二卡 精品一卡二卡三卡 | www.日本视频| 亚洲一区二区三区影院 | 亚洲午夜网站 | 精品久久久久久久久久中文字幕 | 色综合久久伊人 | youjizz大全| 一级视频在线免费观看 | 日本黄页网站在线观看 | 碰超在线| 免费黄色大片 | 日本大逼 | 欧美性猛交xxx乱大交 | 日韩啊啊啊 | 国产亚洲精品俞拍视频 | 人人澡人人澡人人看 | 国产精品国产国产aⅴ | 国产成年女一区二区三区 | 欧美色精品 | 免费jjzz在在线播放国产 | 久久综合九色综合狠狠97 | 欧美日韩色黄大片在线视频 | 人人插人人添 | 婷婷久操 | 99re6在线精品视频免费播放 | 日本经典在线三级视频 | 精品福利一区 | 青草青在线 | 久久精品a一国产成人免费网站 | 日本三级日本三级日本三级极 | 免费在线观看网址入口 | 国产日本免费 | 欧美成人免费高清网站 |