色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

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

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

定義

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

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

8.2創建結構體類型

struct 結構體類型名 {

類型 成員1名;

類型 成員2名;

...

類型 成員3名;

};

解釋:

類型 : 任何學過的類型

成員x名: 標識符

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

2.創建結構體類型本身并沒有分配任何存儲空間,用它定義變量的時候才分配空間

8.3創建結構體變量

8.3.1 利用已經創建的類型創建:struct 結構體類型名 結構體變量名;

例子:

8.3.2創建類型同時創建變量

struct 結構體類型名 {

類型 成員1名;

類型 成員2名;

...

類型 成員3名;

} 結構體變量名;

例子:

8.4結構體類型和變量定義形式

8.4.1一般形式

 

8.4.2匿名結構體

 

注意:這種形式一般用在結構體和聯合體中會比較方便。

8.4.3 define

 

8.4.4 typedef(起別名)

 

(常用)

作用:

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

例:char *a,b;

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

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

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

typedef int BOOL

8.5計算結構體變量的成員

結構體變量名.成員名

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

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

實例:

8.6計算結構體和其變量字節數

sizeof(結構體類型名)

sizeof(結構體變量)

8.7結構體變量賦值

注意: 變量類型必須相同

補充:給數組賦值用strcpy

 

8.8結構體變量初始化

8.8.1 普通變量

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

8.8.2 結構體數組

(1) 按結構初始化

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

(2) 按順序初始化

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

實例:

8.9變量對齊

8.9.1 變量對齊

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

8.9.2 結構體成員變量對齊

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

8.9.3 結構體變量對齊

結構體成員變量的最大對齊方式相同

8.9.4 結構體成員變量偏移對齊

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

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

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

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

struct C

{

char b;

int a;

short c;

};

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

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

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

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

8.10 共用體(聯合體)

union 共用體類型名 {

類型 成員名1;

類型 成員名2;

};

注意:共用體使用方法同結構體完全相同,唯一區別在于:

1. 共用體各個成員共用內存

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

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

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

數據0x12345678

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

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

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

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

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

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

數據0x12345678

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

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

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

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

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

8.11 枚舉類型

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

用法:enum 枚舉類型名 {

常量名1,

常量名2,

...

};

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

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

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

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

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

回到頂部

主站蜘蛛池模板: 青青草国产精品一区二区 | 美女扒开腿让男人桶爽网站 | 国产高清在线观看AV片麻豆 | 夜夜爽77777妓女免费视频 | 色噜噜狠狠一区二区三区 | 亚洲综合色丁香婷婷六月图片 | 内射人妻深入内射 | 吉林小伟无套gay | 黄色片子免费观看 | japanese50mature日本亂倫 | 免费av手机在线观看片 | 性中国熟妇videofreesex | 日本无码一区二区三区在线 | 好男人好资源神马在线观看 | 亚洲男人的天堂aⅴ在线视频 | 97干干| 国色天香卡一卡二乱码 | www.黄色网| 国产精品自在在线午夜精华在线 | 国产成人高清精品免费软件 | 无码精品一区二区三区在线A片 | 老师黑色丝袜被躁翻了AV | 精品99re | 中国黄色网页 | 国内免费无码自拍视频网 | AV国産精品毛片一区二区小说 | 国产日产精品_国产精品毛片 | 人妻少妇看A偷人无码精品 国产精品青草久久久久婷婷 | 一级做a爰片久久毛片唾 | 精品中文字幕在线播放 | 又黄又爽的视频在线观看网站 | 好黄好污美女裸体网站 | 丰满爆乳一区二区三区 | 成人国产精品入麻豆 | JJZZ中国JJZZ | 亚洲国产精品VA在线观看香蕉 | 韩国精品一区二区无码视频 | 手机看黄AV免费网址 | 成人a级片 | 人妻AV中文系列 | 偷窥xxxx盗摄国产 |