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

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 學習筆記 > 嵌(qian)入式學習筆(bi)記:c語言結構體定義和使用

嵌入(ru)式學習筆(bi)記:c語言結構(gou)體定義(yi)和使(shi)用 時間:2018-09-12      來源:未知

定義

1)結構體是一種構造數(shu)據類(lei)型

2)把不同類型的數據組合(he)成(cheng)一個整體來自定義(yi)數據類型

8.2創建(jian)結構體類型

struct 結構(gou)體類型名 {

類型 成員1名;

類型(xing) 成員(yuan)2名;

...

類(lei)型 成員3名;

};

解釋:

類(lei)型 : 任何學過(guo)的類(lei)型

成員x名: 標(biao)識符

注意:1.成員名和最后都有 ; 號

2.創建結構(gou)體類型本身(shen)并沒有(you)分(fen)配(pei)任何存(cun)儲空間,用(yong)它(ta)定義變量的(de)時(shi)候才分(fen)配(pei)空間

8.3創(chuang)建結構體變量

8.3.1 利用(yong)已經創(chuang)建的類型創(chuang)建:struct 結(jie)構體類型名(ming) 結(jie)構體變(bian)量(liang)名(ming);

例子:

8.3.2創(chuang)建類型同時(shi)創(chuang)建變(bian)量

struct 結構(gou)體類型名 {

類型 成員1名;

類型 成員2名;

...

類型 成員(yuan)3名;

} 結(jie)構體變量名;

例子:

8.4結(jie)構體(ti)類型和變量定義形式

8.4.1一般形式

 

8.4.2匿名結構體

 

注意:這種形式一(yi)般(ban)用(yong)在(zai)結構體和聯合體中(zhong)會比較(jiao)方(fang)便。

8.4.3 define

 

8.4.4 typedef(起別名)

 

(常用)

作用:

(1)可以避免一些人(ren)理解的(de)錯誤

例(li):char *a,b;

(2)用在結構體上(shang)帶來(lai)方便

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

(4)用typedef來定義與平臺無(wu)關(guan)的類(lei)型(xing)

typedef int BOOL

8.5計算結構體變量的(de)成員

結(jie)構體變量(liang)名.成員名

(*結構體變量指(zhi)針).成員名

結構(gou)體變量指針->成員名(重點)

實例:

8.6計(ji)算結構體和其變(bian)量(liang)字節數(shu)

sizeof(結構體類(lei)型名)

sizeof(結(jie)構體變量)

8.7結構體變(bian)量(liang)賦值

注意: 變量類型必須相同

補充:給數(shu)組(zu)賦值(zhi)用strcpy

 

8.8結構(gou)體(ti)變量初始化

8.8.1 普通變量

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

8.8.2 結構體數組

(1) 按結構初始化(hua)

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

(2) 按順序初(chu)始化(hua)

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

實例:

8.9變量對(dui)齊

8.9.1 變量對齊

變量地址 % min(變量字節(jie)數, 機器位數/8) = 0

8.9.2 結構體成(cheng)員(yuan)變量對(dui)齊

結(jie)構體(ti)成員變量地(di)址 % min(變量字節數, 機器位數/8) = 0;

8.9.3 結構(gou)體變量對(dui)齊

結構(gou)體成員變量的最大(da)對齊方式(shi)相同(tong)

8.9.4 結構(gou)體成員(yuan)變量偏移對齊

結構體(ti)成員變(bian)(bian)量偏移 % min(變(bian)(bian)量字節數, 機器位(wei)數/8) = 0;

補充:使用偽指令#pragma pack(n):C編譯(yi)器(qi)將按照n個字(zi)節對齊;

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

例子:#pragma pack(2) //指定(ding)按2字節對齊

struct C

{

char b;

int a;

short c;

};

#pragma pack() //取消(xiao)指定對齊,恢復缺省對齊

另外(wai),還有(you)如下的(de)一種方式(shi)(GCC特有(you)語(yu)法):

__attribute((aligned (n))): 讓所作用(yong)的結構(gou)成(cheng)員對齊在n字(zi)節自然邊(bian)界上(shang)。如果結構(gou)體中有成(cheng)員的長(chang)度大于n,則(ze)按照最大成(cheng)員的長(chang)度來對齊。

__attribute__ ((packed)): 取消(xiao)結構(gou)在編譯過程中的優化對(dui)齊,按照實際(ji)占用(yong)字節數進行對(dui)齊。

8.10 共用體(聯合體)

union 共用體類型名 {

類型 成員(yuan)名1;

類型(xing) 成員名2;

};

注(zhu)意:共(gong)用(yong)體(ti)使用(yong)方法同結構體(ti)完全相同,唯(wei)一區(qu)別(bie)在于:

1. 共用體各個成員(yuan)共用內存

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

補充:計算機的大小端序:字節(jie)序就是變(bian)量在內存中存放的方式(shi)。

大端序:字數據的高字節存儲在低地址(zhi)中。

數(shu)據0x12345678

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

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

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

| 內容 | 0x12 | 0x34 | 0x56 | 0x78 |

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

小端序:字數(shu)據的低字節存儲在低地址中。

數(shu)據0x12345678

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

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

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

| 內容 | 0x78 | 0x56 | 0x34 | 0x12 |

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

8.11 枚舉類型

作用;給一(yi)組相(xiang)關(guan)的字面常量(liang)取名, 并將它(ta)們定義為相(xiang)同類型(xing)

用法:enum 枚(mei)舉類型名 {

常量名1,

常量名2,

...

};

注(zhu)意(yi):1. 沒有(you)指定(ding)值(zhi)時, 常量名1 值(zhi)取 0, 后面(mian)每個常量的值(zhi)等于前面(mian)常量的值(zhi)加1

2. 可(ke)以給常量指定值(zhi),讓它們(men)從某一(yi)整數(shu)開(kai)始

上一篇:嵌入式學習筆記:C高級函數快速學

下一篇:嵌入式學習筆記; c指針詳解很詳細,學霸總結

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

回到頂部