




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第第8章章 結構、聯合和枚舉結構、聯合和枚舉8.1 8.1 類型定義類型定義概念: 由用戶自己定義數據類型方法: 非結構型定義(類型的引用)和結構類型定義8.28.2非結構型定義非結構型定義例: 將integer 也定義成 int typedef int integerinteger 在程序中: int a,b,c; 和 integer a,b,c; 作用相同 例:將 ul 定義為 unsigned long typedef unsigned long ulul (以少代多)8.3 結構 (結構類型定義) 把不同的數據類型或多個數據定義成一個結構, 該結構(類型)稱為結構體.8.3.1 定義結
2、構例如,定義一個”學生“屬性的結構體。struct student int num; char name10; int age; char sex; float score; char addr30; m,n;說明: 其中student 是由用戶定義的結構體類型名(在數據類型中有增加了一個類型)。 其中的成員稱作域名。8.3.2 說明結構變量說明結構變量 (結構類型變量定義方法結構類型變量定義方法)例:將a,b,c 說明成student 結構體類型方法一:用結構體類型進行說明struct student a,b,c方法二:先用宏定義#define student struct students
3、tudent a,b,c;方法三:定義結構體時就說明例:將 m, n 說明成 teacher 結構體類型struct teacher char name10; int age; char sex; char addr30; m,n;說明: 1. 結構體中的成員稱為域名或分量。 2. 結構體和宏定義常常以頭文件方式使用。 3. 每一個成員需要進行類型說明。 4. 結構體中的成員名可以與普通變量名相同,但使用的方式不同。 5. 結構體中的成員還可以是另一個結構體變量。 6. 可以使用sizeof() 函數測出每一個變量、類型(float等)等占用內存的字節數。8.3.3 結構體成員結構體中的成員還
4、可以是另一個結構體變量struct pat unsigned long zip; /郵編 char *addr; /地址 unsigned long tel; ; struct address_book char *name; long num; pat depart; /單位 pat home; /家庭 a;8.3.4 訪問結構體變量訪問結構體變量例: address_book a, s 10 a.num a.depart.num s3.num s3.home.tel 8.3.5 結構體變量的初始化結構體變量的初始化(賦值賦值)例: 給變量賦值struct student lo
5、ng int num; char name10; int age; char sex; a=200705312, “zhang li”, 18, w;例: 給結構類型的數組變量賦值struct student long int num; char name10; int age; char sex; s30=200205312,“zhangli”, ,2002;8.4 結構體類型的變量輸出例:使用scanf() 給結構體數組類型賦值,輸入三個學生的有關信息,然后輸出程序為:struct student long int num; char name10; char sex; s3;main()
6、int k; for(k=0; ksk.num; ; cinsk.sex; for(k=0; k3;k+) coutsk.num”n”; ”n”; coutsk.sexendl; 例:結構體嵌套的輸入輸出struct date int year; int month; int day ;struct student long int num; char name10; struct date birthday; s3;main()int k; for(k=0; ksk.num; ; cinsk.birthday.year; cins
7、k.birthday.month; cinsk.birthday.day; for(k=0; k3;k+) coutsk.num; ; coutsk.birthday.year; coutsk.birthday.month; coutnum 引用a中的成員(方法一) (*p).num 引用a中的成員(方法二)8.6 用結構指針變量代替結構體數組變量用結構指針變量代替結構體數組變量 struct student long int num; char name10; char sex; ; struct student s30; struct student *p; p=s;
8、 p-num 引用某一元素中的num成員 (*p).num (p+)-num 引用某一元素中的num成員后指針指向下一個(人)數組元素.例: 用結構體類型指針變量完成上題struct date int year; int month; int day struct student int num; char name10; struct date birthday; s30;main()int k; struct student *p; p=s; for(k=0; kp-num; cinp-name; cinp-birthday.year; cinp-birthday.month; cinp-
9、birthday.day; for(k=0; k3;k+,p+) coutnum; coutname; coutbirthday.year; coutbirthday.month; coutbirthday.day; 8.7 位域位域 位域是以二進制形式定義結構成員, 使用多少定義多少。8.7.1 定義位域的方法定義位域的方法 例: struct student char *name; unsigned int sex : 1; unsigned int age : 7; ;說明:1. 在成員后使用 : n 即可, n 指的是二進制位數。2. 使用位域和不使用位域差2個字節。3. 1位可表示1
10、 或 0, 8 位可以表示 0到 128。8.7.2 使用位域成員的方法使用位域成員的方法與普通成員一樣,注意1 和 0 即可表示邏輯值。8.7.3 使用位域注意事項使用位域注意事項1. 位域成員必須是unsigned int 。2. 位域成員所占位數可任意。3. 如果從新的字節開始,可以使用: unsigned int 0;8.8 聯合聯合(共用體)8.8.1 聯合的概念與定義聯合的概念與定義 不同的數據可以共用存儲單元例: union un int n; char name; float x;其特點是所有成員具有相同的首地址8.8.2 聯合體變量的定義聯合體變量的定義 聯合體類型名 變量名8.8.3 聯合體的使用聯合體的使用通過變量使用例: un a,b; a.n=2003; =”hello” b.x=3.14159628.8.4 聯合體類型的特點聯合體類型的特點 共享內存單元 每一時刻只能有一個成員起作用 最后一次賦值的成員有效 各成員的首地址相同 聯合體變量不能參加任何運算和初始化 8.9 枚舉枚舉 8.9.1枚舉類型的定義枚舉類型的定義例: enum weekdaysun=5,mon=1,tue,wen,thu,fri,sat;說明: 可以直接改變成員的順序。8.9.2 枚舉類型變量的說明枚舉類型變量的說明方法1: 直接枚舉類型
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 西安外國語大學《景觀設計基礎》2023-2024學年第一學期期末試卷
- 江蘇省南京玄武區2025屆初三3月聯合檢測試題(生物試題理)試題含解析
- 山西省晉中學市榆社縣2024-2025學年初三下學期期初自測化學試題含解析
- 重慶航天職業技術學院《能源動力測試技術》2023-2024學年第二學期期末試卷
- 江蘇省鹽城市東臺市2025年學生學業調研抽測試卷(第二次)化學試題含解析
- 吉林省梅河口五中2025年高中畢業班質量檢查(II)生物試題含解析
- 山西醫科大學《通風與空調工程課程設計》2023-2024學年第二學期期末試卷
- 西安美術學院《基礎藥理學》2023-2024學年第二學期期末試卷
- 江西工程學院《機械與電氣安全》2023-2024學年第二學期期末試卷
- 云南省楚雄北浦中學2025屆初三大練習(一)數學試題含解析
- 中國移動網絡運行維護規程(2014版)
- 歐洲法國意大利簽證行程單
- (西北)火力發電廠汽水管道支吊架設計手冊
- 高老鼠和矮老鼠PPT
- 針織毛衫實例
- 套絲機簡介ppt課件
- 商業票據與核算
- 副詞講義 Adverbs
- 鋁合金門窗、百葉施工組織設計
- 經典物理浮力計算題(含答案)
- 上海應用技術大學2019屆畢業生就業推薦表
評論
0/150
提交評論