日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

学习笔记17-C语言-结构、联合、枚举

發(fā)布時間:2023/12/13 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学习笔记17-C语言-结构、联合、枚举 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

結(jié)構(gòu): struct

結(jié)構(gòu)是由程序猿自己設計的一種數(shù)據(jù)類型,用于描述一個事務的各項數(shù)據(jù),由若干個不同的基礎數(shù)據(jù)類型組成。設計結(jié)構(gòu):struct 結(jié)構(gòu)體名{類型 成員名;...};定義結(jié)構(gòu)體變量struct 結(jié)構(gòu)體名 變量名;注意:定義結(jié)構(gòu)變量時,struct不能省略定義并初始化結(jié)構(gòu)變量 struct 結(jié)構(gòu)體名 變量名 = {v1,v2,v3,...}; 根據(jù)成員的順序進行初始化 也可以 struct 結(jié)構(gòu)體名 變量名 = {.成員名= ,.成員名= ,.成員名= ,...} 只初始化某些成員 同類型的結(jié)構(gòu)變量可以直接賦值訪問成員:變量名.成員名;結(jié)構(gòu)指針->成員名; 結(jié)構(gòu)體變量作為形參時:由于結(jié)構(gòu)變量的字節(jié)數(shù)都比較大,值傳遞效率比較低,因此都傳遞結(jié)構(gòu)體變量的地址如果不需要修改結(jié)構(gòu)變量的值,可以用const保護 typedef 重定義結(jié)構(gòu)類型:typedef struct 結(jié)構(gòu)名 結(jié)構(gòu)名;之后就可以不用加struct關鍵字typedef struct 結(jié)構(gòu)體名{...}結(jié)構(gòu)體名;注意:結(jié)構(gòu)體變量一般存儲在堆內(nèi)存計算結(jié)構(gòu)體的字節(jié)數(shù)結(jié)構(gòu)體成員的順序會影響它的總字節(jié)數(shù)大小,在設計結(jié)構(gòu)體時,如果順序合理能夠大大節(jié)約內(nèi)存。內(nèi)存對齊:假設第一個成員從零地址開始,存儲每個成員的地址編號必須能被比它的字節(jié)數(shù)整除,如果不能會填充空字節(jié)內(nèi)存補齊:結(jié)構(gòu)體的總字節(jié)數(shù),必須是它最大成員字節(jié)數(shù)的整數(shù)倍,如果不是則在末尾填充空字節(jié)注意:在Linux系統(tǒng)下計算結(jié)構(gòu)體的對齊、補齊時,如果成員的字節(jié)數(shù)超過4,則按照4字節(jié)計算在windows系統(tǒng),則按照實際情況計算#pragma pack(n) 設置對齊、補齊的最大字節(jié)數(shù) n<=默認Linux:1、2、4...

聯(lián)合: union

聯(lián)合與結(jié)構(gòu)的使用方法基本一致,與結(jié)構(gòu)的區(qū)別是所有成員共用的一塊內(nèi)存,如果一個成員的值發(fā)生改變,其他成員的值也會隨之發(fā)生改變 聯(lián)合就是用少量的內(nèi)存對應多個標識符,從而達到節(jié)約內(nèi)存的目的,現(xiàn)在基本上不再使用。 ??嫉墓P試題: union Date {char ch[10];int num; } 12 注意:聯(lián)合天然對齊,但計算聯(lián)合的字節(jié)數(shù)時要考慮內(nèi)存補齊如何判斷系統(tǒng)是大端系統(tǒng)還是小端系統(tǒng)?假如十六進制整數(shù)0x01020304存儲在以0x0A為起始的4字節(jié)內(nèi)存中:小端:高位數(shù)據(jù)存儲在高位地址中(0A:04 0B:03 0C:02 0D:01)大端:高位數(shù)據(jù)存儲在低位地址中(0A:01 0B:02 0C:03 0D:04)個人計算機系統(tǒng)一般都是小端系統(tǒng),UNIX服務器和網(wǎng)絡設備都是大端,網(wǎng)絡字節(jié)序也是大端模式的數(shù)據(jù)序列化和反序列化

枚舉: enum

枚舉就是一種數(shù)據(jù)類型,把所有可能出現(xiàn)的值列出來,可以取一個有意義的名字,除此之外,該類型的變量在等于其他值都是非法的(愿望)enum 枚舉名{枚舉常量1,枚舉常量2,...};枚舉就可以看作是一種類型受限的int類型,但是編譯器為了效率并不會檢查數(shù)據(jù)的值,所以在C語言中枚舉可以當作int類型使用enum Dirextion{UP=183,DOWN,LEFT,RIGHT}; 如果不給成員值,枚舉常量的值默認從0開始,逐漸加1,如果某個設置了值,后面的在它的基礎上加1為什么要用枚舉:為無意義的數(shù)據(jù)取一個有意義的名字,提高代碼的可讀性和安全性(比宏常量安全)

總結(jié)

以上是生活随笔為你收集整理的学习笔记17-C语言-结构、联合、枚举的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。