C--程序設計教程第7章_第1頁
C--程序設計教程第7章_第2頁
C--程序設計教程第7章_第3頁
C--程序設計教程第7章_第4頁
C--程序設計教程第7章_第5頁
已閱讀5頁,還剩26頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、本章內容提要7.1 結構體7.2 共用體7.3 枚舉類型7.4 typedef聲明7.1 結構體struct 結構體類型名成員類型1 成員名1;成員類型2 成員名2;成員類型n 成員名n;定義結構體類型的一般形式為:在定義結構體類型的同時定義變量7.1.1 結構體變量的定義、初始化及使用1結構體變量的定義struct 結構體類型名成員類型1 成員名1;成員類型2 成員名2;成員類型n 成員名n;變量名1,變量名2,變量名n;先定義結構體類型再定義變量struct 結構體類型名 變量名1,變量名2,變量名n;直接定義結構體變量struct成員類型1 成員名1;成員類型2 成員名2;成員類型n 成

2、員名n;變量名1,變量名2,變量名n;2結構體變量的初始化struct date int year; int month; int day;birthday1=1998,11,22,birthday2=2003,10,23;struct date int year; int month; int day;struct date birthday1=1998,11,22;date birthday2=2003,10,23;struct int year; int month; int day;birthday1=1998,11,22,birthday2=2003,10,23;3結構體變量的使用結

3、構體變量的運算具有相同類型的結構體變量可以進行賦值運算,但不能直接進行輸入/輸出。結構體成員的使用結構體變量名成員名例如:cout成員名7.1.2 結構體數組的定義、初始化及使用1結構體數組的定義struct date int year;int month;int day;birthday3;struct date int year;int month;int day;date birthday3;struct int year;int month;int day;birthday3;2結構體數組的初始化struct date int year; int month; int day;birt

4、hday3=1998,11,22,2003,10,23,2008,1,7;3結構體數組的使用結構體數組中的每個元素都是一個結構體類型數據。結構體數組是通過下標變量引用結構體成員的。7.1.3 指向結構體變量的指針定義一個指向結構體變量的指針,那么該指針的值是結構體變量所占內存段的起始地址。通過指向結構體變量的指針,可以引用結構體變量中的成員:指針變量名成員名;例如:struct date int year; int month; int day;birthday1,birthday2;date *p;/定義指向結構體類型date的指針pp=&birthday1;/將結構體變量的起始地址賦值給指

5、針pp-month=5; /通過指針引用結構體變量的成員,并為其賦值7.1.4 結構體作為函數參數值傳遞用結構體變量名作為函數的實參,將結構體變量中的內容全部順序傳遞給形參。若在函數調用期間,形參的內容發生改變,將不會影響主調函數中相對應的實參。地址傳遞用指向結構體變量的指針作為函數實參,將結構體變量的地址傳遞給形參。引用傳遞用結構體變量的引用變量作為函數參數。7.2 共用體union 共同體類型名成員類型1 成員名1;成員類型2 成員名2;成員類型n 成員名n;在定義結構體類型的同時定義變量7.2.1 共用體變量的定義與初始化例如:union data int a; float b; cha

6、r c;x=123;先定義結構體類型再定義變量例如:union data float b;int a;char c; data y=12.3;直接定義結構體變量例如:union char c; int a; float b; z=c;7.2.2 共用體變量的使用相同類型的共用體變量可以進行賦值運算,對共用體變量中的成員可以進行各種運算。共同體變量名成員名例如:x.a/引用共同體變量x中的整型成員ay.b/引用共同體變量x中的浮點型成員b7.3 枚舉類型如果一個變量只有有限個可能的取值,可以將這些值一一列舉出來,定義為枚舉類型。枚舉類型是由若干個常量組成的有限集合。enum 枚舉類型名枚舉常量列

7、表;例如:enum FruitAPPLE,ORANGE,PEAR,GRAPE,PEACH;枚舉元素是常量,其本身是有值的,如果枚舉常量在定義時沒有指定其對應的值,系統將按定義時的順序自動為它們賦值。例如:enum FruitAPPLE=1,ORANGE=2,PEAR=3,GRAPE=4,PEACH=5;enum FruitAPPLE=4,ORANGE=0,PEAR,GRAPE,PEACH;7.3.1 枚舉類型變量的定義與初始化可以在定義枚舉類型的同時定義枚舉類型變量并初始化。例如:enum FruitAPPLE,ORANGE,PEAR,GRAPE,PEACHf=PEACH; /定義枚舉變量f也

8、可以先定義枚舉類型,再定義枚舉變量并初始化。例如:enum FruitAPPLE,ORANGE,PEAR,GRAPE,PEACH;Fruit f1=ORANGE,f2; /定義2個枚舉變量f1和f2,并為f1賦初值7.3.2 枚舉類型變量的使用枚舉類型可以看作是一個整型常量的集合,枚舉變量的值為該枚舉類型定義中的某個常量的值。例如:enum FruitAPPLE,ORANGE,PEAR,GRAPE,PEACHf1;f1=ORANGE;coutGRAPE) /f1值為1,GRAPE值為3,故關系表達式的值為false枚舉變量可以與整型數據之間進行類型轉換,但不能將一個整型數據直接賦給一個枚舉型變

9、量,應先進行強制類型轉換使等號兩邊的類型相同才能賦值。例如:Fruit f2;f2=Fruit(2);/將序號為2的元素賦值給f2或f2=(Fruit)2;7.4 typedef聲明typedef聲明用于為已存在的數據類型定義一個新的類型名稱。typedef 類型名稱 類型標識符;例如:typedef int INTEGER;/用標識符INTEGER代替C+中的標準數據類型inttypedef struct/用DATE表示定義的結構體類型int year;int month;int day;DATE;DATE birthday;/用DATE定義結構體變量birthday另外,還可以用typed

10、ef為數組、指針等定義新的類型名稱。例如:typedef int COUNT10;/用COUNT定義長度為10的整型數組COUNT a;/定義長度為10的整型數組atypedef char *STRING;/定義STRING為字符指針STRING p;/用STRING定義字符指針變量ptypedef int (*MAX)(int a, int b);/定義MAX為指向函數的指針MAX p;/用MAX定義指針變量p綜合實例1 輸出教師信息/實例7-1.cpp#include union cf/共用體類型 char clname30;/所講課程int num;/論文數目;struct teache

11、rs/結構體類型 int num;/編號char name20;/姓名char zc;/職稱,教師為l,教授為punion cf x;/結構成員變量x為共用體類型,可變字段teach3;/定義結構體數組teachvoid main() int i;for(i=0;i3;i+) coutinput num:teachi.num;/輸入教師號coutinput name:;/輸入教師名字coutinput zc:teachi.zc;/輸入教師職稱if(teachi.zc=l) coutinput clnameteachi.x.clname;else if(teachi.zc=

12、p)/如果職稱是教授,則輸入論文數目。 coutinput thesis_num:teachi.x.num;else coutinput data errorendl;coutnumtnametzctclname/numendl;for(int j=0;j3;j+) tteachj.zct;if(teachj.zc=l)coutteachj.x.clnameendl;else if(teachj.zc=p)coutteachj.x.numendl;else coutdata errorendl;input num:1021input name

13、:陳杰input zc:pinput thesis_num:15input num:1022input name:方平input zc:l測試數據與運行結果:input clname:高等數學input num:1023input name:賈小亮input zc:linput clname:大學體育num name zc clname/num1021 陳杰 p151022 方平 l高等數學1023 賈小亮 l大學體育綜合實例2 輸出每種動物的信息/實例7-2.cpp#include struct BIRTHDAY/定義結構體類型BIRTHDAY int YEAR;int MONTH;int

14、DAY;enum COLORWHITE,BLACK,YELLOW;/定義枚舉類型COLORstruct ANIMAL/定義結構體類型ANIMAL float weight;BIRTHDAY birthday;COLOR color;cat,dog;/定義結構體變量cat和dogvoid GetColor(int c)/根據用戶輸入,輸出顏色信息 switch(c) case 0:coutWHITEendl;break;case 1:coutBLACKendl;break;case 2:coutYELLOWendl;break;void main() cat.weight=100;/為結構體變量

15、cat賦初值cat.birthday.YEAR=2009;cat.birthday.MONTH=8;cat.birthday.DAY=14;cat.color=(COLOR)2;/枚舉變量與整型數據之間進行類型轉換coutinput weight birthday(year month day) color endldog.weight;/為結構體變量dog賦初值cindog.birthday.YEAR;cindog.birthday.MONTH;cindog.birthday.DAY;int dcolor;cindcolor;dog.color=(COLOR)dcolor;/枚舉變量與整型數據之間進行類型轉換coutdog:endlweight:dog.weightendlbirthday:dog.birthday.YEAR.dog.birthday.MONTH.dog.birthday.DAYendlcolor:;GetColor(dog.color);coutcat:endlweight:cat.weightendlbirthday:cat.birthday.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論