




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第19章 共用體、枚舉和位域楊章偉楊章偉:yang5054121631-2課程內容安排課程內容安排共用體共用體 枚舉枚舉 位域位域 小結小結 習題習題 1-3共用體共用體 繼第繼第18章引見了構造體之后,本章將引見另外三種高級數據章引見了構造體之后,本章將引見另外三種高級數據類型:共用體、枚舉和位域。這三種數據類型與構造體一樣類型:共用體、枚舉和位域。這三種數據類型與構造體一樣,都是多個數據單元結合而成的復雜數據單元,因此,它們,都是多個數據單元結合而成的復雜數據單元,因此,它們可以用來描畫更為復雜的數據方式。這三種數據類型的適用可以用來描畫更為復雜的數據方式。這三種數據類型的適用范圍各有不同
2、范圍各有不同 。共用體共用體union是是C言語中另一種高級數據構造,它可以使言語中另一種高級數據構造,它可以使幾個不同成員共享同一塊內存。合理地運用共用體可以節省幾個不同成員共享同一塊內存。合理地運用共用體可以節省內存空間,還可以簡化多種復雜數據的處置。內存空間,還可以簡化多種復雜數據的處置。 1-4聲明共用體類型聲明共用體類型 在程序中,有時為了節約內存空間,可以運用共用體來在程序中,有時為了節約內存空間,可以運用共用體來使多個變量共享一塊內存。共用體與構造體類似,可以使多個變量共享一塊內存。共用體與構造體類似,可以含有多個成員,其聲明方式如下:含有多個成員,其聲明方式如下:union 共
3、用體名共用體名 數據類型名數據類型名 成員名成員名1;數據類型名數據類型名 成員名成員名2;數據類型名數據類型名 成員名成員名3;但與構造體構造不同的是,共用體的一切成員共享同一但與構造體構造不同的是,共用體的一切成員共享同一塊內存,而構造體的每個成員都有本人的內存空間。一塊內存,而構造體的每個成員都有本人的內存空間。一個共用體類型的字節長度為占用內存空間最多的成員變個共用體類型的字節長度為占用內存空間最多的成員變量的字節長度。量的字節長度。 1-5定義共用體變量定義共用體變量 共有體變量的定義方法與構造體變量類似。可以先聲明一個共用體類型,再運用該共用體類型來定義共用體變量;也可以直接定義共
4、用體變量;還可以運用typedef來定義一個共用體類型別名,再運用共有體別名來定義共有體變量。僅以第三種方式為例,如下所示。typedef union _data_u_t int a;char b;long long c; data_u_t;data_u_t v;1-6枚舉枚舉 枚舉類型是枚舉類型是C言語中另一種高級類型。在前面曾經學習了可以言語中另一種高級類型。在前面曾經學習了可以運用運用const常量和具名常量來替代程序中出現的常量數值,枚常量和具名常量來替代程序中出現的常量數值,枚舉類型也可以用來定義常量數值。舉類型也可以用來定義常量數值。 1-7聲明枚舉類型聲明枚舉類型 C言語運用枚舉
5、類型為這種情況下的常量替代提供了更好的處言語運用枚舉類型為這種情況下的常量替代提供了更好的處理方案。枚舉類型是一組相關數據的集合,它可以在定義常量理方案。枚舉類型是一組相關數據的集合,它可以在定義常量的同時,將這些常量結合在一個集合中加強彼此的關系。枚舉的同時,將這些常量結合在一個集合中加強彼此的關系。枚舉類型的聲明與構造體和共用體的聲明略有不同,其方式如下:類型的聲明與構造體和共用體的聲明略有不同,其方式如下:enum 枚舉類型名枚舉類型名 枚舉成員枚舉成員1;枚舉成員枚舉成員2;枚舉成員枚舉成員3;其中的枚舉成員都為其中的枚舉成員都為int型,假設沒有顯式賦值,系統會自動型,假設沒有顯式賦
6、值,系統會自動將一切枚舉成員從將一切枚舉成員從0開場賦值,而后面的枚舉成員依次比前一開場賦值,而后面的枚舉成員依次比前一個大個大1。 1-8位域位域 在一些義務中,需求處置的信息都只需求占用一個或幾個二進制位在一些義務中,需求處置的信息都只需求占用一個或幾個二進制位,這種情況下,假設運用普通的數據構造進展處置,會占用額,這種情況下,假設運用普通的數據構造進展處置,會占用額外的空間,并添加多余的處置時間。這時,可以運用外的空間,并添加多余的處置時間。這時,可以運用C言語中的言語中的另一種數據構造另一種數據構造“位域或稱為位域或稱為“位段來處置該數據。位段來處置該數據。 位域屬于構造體,它允許在構
7、造體內以位為單位將其空間劃分為多位域屬于構造體,它允許在構造體內以位為單位將其空間劃分為多個區域,并將其分配給構造體的各個成員。在程序中可以經過個區域,并將其分配給構造體的各個成員。在程序中可以經過操作位域的各個成員來操作其中的區域。操作位域的各個成員來操作其中的區域。 1-9位域的概念位域的概念 利用位域可以運用較少的字節數來存儲信息,其方式如下:利用位域可以運用較少的字節數來存儲信息,其方式如下:struct 構造體名構造體名 /* 定義位域成員定義位域成員 */unsigned 位域成員位域成員1 : 常量常量1;unsigned 位域成員位域成員2 : 常量常量2;int 位域成員位域
8、成員3 : 常量常量3;int 位域成員位域成員4 : 常量常量4;/* 定義其他普通成員定義其他普通成員 */數據類型名數據類型名 成員成員1;數據類型名數據類型名 成員成員2;1-10小結小結 本章學習了本章學習了C言語中三種高級數據類型:構造體言語中三種高級數據類型:構造體struct、共用體共用體union和枚舉和枚舉enum。其中,構造體的運用非常。其中,構造體的運用非常廣泛,需求重點掌握它的運用方法,包括構造體變量的運用、廣泛,需求重點掌握它的運用方法,包括構造體變量的運用、構造體數組的運用和構造體指針的運用;而枚舉類型普通用來構造體數組的運用和構造體指針的運用;而枚舉類型普通用來
9、定義一組相關的常量屬性。在本章的學習中,需求留意以下幾定義一組相關的常量屬性。在本章的學習中,需求留意以下幾點:點:本章學習的三種數據類型的稱號都較長,可以運用本章學習的三種數據類型的稱號都較長,可以運用typedef來來得到簡化的別名。得到簡化的別名。由于共用體中的一切成員共享一塊空間,因此,對恣意成員的由于共用體中的一切成員共享一塊空間,因此,對恣意成員的賦值都會影響其他成員的值。賦值都會影響其他成員的值。枚舉類型普通用于會處置一組相關的屬性,不要聲明只含一個枚舉類型普通用于會處置一組相關的屬性,不要聲明只含一個枚舉成員的枚舉類型。枚舉成員的枚舉類型。 1-111【考題】共用體的特征有哪些
10、?【考題】共用體的特征有哪些?【解析】共用體可以含有多個成員,但同時只需一個成員可以被賦【解析】共用體可以含有多個成員,但同時只需一個成員可以被賦值,其共享一塊空間,對恣意成員的賦值都會影響到其他成員值,其共享一塊空間,對恣意成員的賦值都會影響到其他成員的值。的值。 常見面試題常見面試題 1-122【考題】設有以下闡明和定義:【考題】設有以下闡明和定義: typedef union long i; int k5;char c; DATE; struct data int cat; DATE cow; double dog; too; DATE max; 那么語句那么語句 printf(“%dn
11、,(sizeof(struct data)+sizeof(max);的執行結果是多少?的執行結果是多少? 常見面試題常見面試題1-131試運用試運用union和和struct設計一個可以同時處置設計一個可以同時處置char型數型數據、據、int型數據和型數據和double型數據的數據類型;并設計兩個函型數據的數據類型;并設計兩個函數,分別實現對這個數據類型的輸入和輸出,其函數聲明數,分別實現對這個數據類型的輸入和輸出,其函數聲明如下:如下:int input_value(數據類型名數據類型名 * v, void * data);/* 將恣意將恣意類型的數據類型的數據data,賦值給,賦值給v */void output_value(數據類型名數據類型名v);/* 輸
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生命的美麗中考語文作文
- 監理工程師職業心理健康考核試卷
- 安全教育在危機管理中的價值與應用考核試卷
- 體育用品行業綠色包裝與可持續發展考核試卷
- 畜牧獸醫技術考核試卷
- 上海高三語文作文素材
- 幕墻施工中的安全操作規程考核試卷
- 浙江省湖州市長興縣南太湖聯盟2024?2025學年高一下學期3月聯考 數學試題(含解析)
- 5-6MSI同步計數器1-74161基本概念
- 1-3數制-非十進制和十進制
- 廣州市2025年居民住宅拆遷補償安置協議
- TCPSS 1011-2024 直流散熱風扇運行壽命測試方法
- 2024年全國高中數學聯賽(四川預賽)試題含答案
- 骨腫瘤放射治療2025指南
- DB12T 1432-2025 城市道路交通標線設置規范
- 2025年水電項目自動化控制系統安裝合同4篇
- 旅游行業行程變更及退費免責條款
- 2025年華潤電力控股有限公司招聘筆試參考題庫含答案解析
- 化工廠環保知識培訓課件
- 2023托福聽力高分筆記
- 2025年杭州市蕭山區國企招聘筆試參考題庫含答案解析
評論
0/150
提交評論