資源描述:
《結構體、共用體與枚舉》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。
1、9結構體、共用體與枚舉本章導讀用戶定義類型—結構體、共用體和枚舉類型,包括它們的定義、變量的說明和應用。結構體類型:結構體數(shù)組和指針、結構體變量和指針作為函數(shù)參數(shù)、返回結構體類型數(shù)據(jù)的函數(shù)、動態(tài)內(nèi)存分配、鏈表;類型定義符typedef;了解結構體、共用體和枚舉類型數(shù)據(jù)的特點,熟練掌握結構體類型、變量、數(shù)組、指針變量的定義、初始化和成員的引用方法;掌握共用體和枚舉類型、變量的定義和引用;掌握用戶自定義類型的定義和使用。9.1 結構體【問題】什么是結構體類型?什么是結構體變量?結構體類型與數(shù)組類型有什么區(qū)別和聯(lián)系?姓名年齡性別身份證號民族住址電話號碼(字符數(shù)組)(整型)(
2、字符)(長整型)(字符)(字符數(shù)組)(長整型)9.1.1結構體類型的定義結構體類型的定義形式為:struct類型名{成員項表列};例如包含上圖中全部類型數(shù)據(jù)的結構體類型的定義如下:structperson/*結構體類型名*/{charname[20];/*以下定義成員項的類型和名字*/intage;charsex;longnum;charnation;charaddress[20];longtel;};9.1.2結構體變量的說明結構體變量的說明有三種方法:1.用已定義的結構體類型名定義變量。例如:structpersonstudent,worker;/*定義了兩個結構
3、體變量student和worker*/用上面的結構體類型還可再定義變量:structpersonmen,women;2.在定義結構體類型的同時定義結構體變量。例如:structperson{charname[20];intage;……longtel;}student,worker;一般的形式為:struct類型名{成員項表列}變量名表列;這樣定義的結構體類型也還可多次使用,如:structpersonmen,women;9.1.2結構體變量的說明3.不定義結構體類型名,直接定義結構體變量。一般形式為:struct{成員項表列}變量名表列;9.1.2結構體
4、變量的說明9.1.3結構體變量的初始化在以上結構體變量的三種定義的同時都可以進行初始化賦值,例如:structpersonstud1={"WangLi",18,'M',34011,'h',12,"13BejingRoad",2098877},stud2={"YuPing",19,'F',34082,'h',12,"25HefeiRoad",5531678};注意初始化數(shù)據(jù)應與類型中的各個成員在位置上一一對應。對于嵌套的結構體類型變量,初始化是對各個基本類型的成員賦初值,例如:structpersonstudent={"WangLi",12,5,1974,'M',340
5、201,'h',12,"13BejingRoad",2098877};9.1.4結構體變量的引用1.引用結構體成員在無嵌套的情況下,引用結構體變量成員的形式為:結構體變量名·成員名其中的“.”叫“結構體成員運算符”,這樣引用的結構體成員相當于一個普通變量,例如:student.num/*結構體變量student的成員num,相當于一個長整型變量*/student.name/*結構體變量student的成員name,相當于一個字符數(shù)組名*/在有嵌套的情況下,訪問的應是結構體的基本成員,因為只有基本成員直接存放數(shù)據(jù),且數(shù)據(jù)是基本類型或上面介紹的數(shù)組類型,引用形式為:結構體
6、變量名·結構體成員名·…·結構體成員名·基本成員名即從結構體變量開始,用成員運算符“.”逐級向下連接嵌套的成員直到基本成員,不能省略,例如:student.birthday.year/*基本成員year,相當于一個整型變量*/9.1.4結構體變量的引用2.結構體變量的賦值、輸入和輸出由于結構體各個成員的類型不同,對結構體變量賦值也只能對其成員進行結構體變量的輸入和輸出也都只能對其成員進行3.同一類型的結構體變量可相互賦值同類型的兩個結構體變量之間可以整體賦值(請比較數(shù)組之間不能整體賦值)stud1=stud2;9.1.4結構體變量的引用【例9-1】輸出結構體數(shù)據(jù)#in
7、cludemain(){structperson{charname[20];struct{intmonth;intday;intyear;}bd;charsex;longnum;}st={"WangLi",12,15,1974,'M',340201};printf("%s,%d,%d,%d,",st.name,st.bd.year,st.bd.month,st.bd.day);printf("%c,%ld",st.sex,st.num);}9.1.5結構體數(shù)組1.結構體數(shù)組的定義有三種方法。(1)先定義結構體類型,用結構體類型名