




已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第十四章、結(jié)構(gòu)體、共同體和用戶定義類型,14.1 結(jié)構(gòu)體與共用體類型數(shù)據(jù)的定義方法和引用方法,一、用typedef說明一種新的類型名 格式:typedef 類型名 標識符; 例子:typedef int INTEGER; INTEGER m,n;/等價于int m,n; Typedef char* CHARP; CHARP p;/等價于char* p;,二、結(jié)構(gòu)體類型 一般格式: struct 結(jié)構(gòu)體標識符名 類型名1 結(jié)構(gòu)體成員名表1; 類型名2 結(jié)構(gòu)體成員名表2; 類型名n 結(jié)構(gòu)體成員名表n; ; 例如: struct date int year,month,day;,注意: 1、類型名1-類型名n不僅可以是簡單數(shù)據(jù)類型,也可以復(fù)雜的構(gòu)造類型,包括結(jié)構(gòu)類型。 例如: struct student char name12; char sex; stuct date birthday; float sc4; ; 2、結(jié)構(gòu)體類型只是說明了這種類型結(jié)構(gòu)的模式,這時沒有分配內(nèi)存空間。,結(jié)構(gòu)體類型變量、數(shù)組和指針變量的定義 (1)緊跟在機構(gòu)體類型說明之后 例如: struct student char name12; char sex; stuct date birthday; float sc4; std,pers3,*pstd;,結(jié)構(gòu)體類型變量、數(shù)組和指針變量的定義 (2)無名結(jié)構(gòu)體類型之后 例如: struct std,pers3,*pstd; (3)先說明結(jié)構(gòu)體類型,再單獨進行變量定義 例如: struct ;,struct student std,pers3,*pstd; (4)用typedef typedef struct char name12; char sex; struct date birthday; float sc4; STREC; STREC std,pers3,*pstd;,給結(jié)構(gòu)體變量、數(shù)組賦初值 1、給結(jié)構(gòu)體變量賦初值 所賦初值順序放在花括號種,結(jié)構(gòu)體成員順序一一賦值,對于為給初值的成員系統(tǒng)自動給定值 例如: struct student char name12; char sex; stuct date birthday; float sc4; std=“Li Ming”,M,1962,5,10,88,76,85.5,90; 2、結(jié)構(gòu)體數(shù)組賦初值,例: struct bookcard char num5; float money; bk3= “NO.1”,35.5, “NO.2”,25.0, “NO.3”,55.7; 結(jié)構(gòu)體類型變量的引用 在定義了結(jié)構(gòu)體變量后,可以采用下列方法引用結(jié)構(gòu)體類型的變量: 結(jié)構(gòu)體變量名.成員名 這里.是成員(分量)運算符,它在所有的運算符中優(yōu)先級最高。,對于指針 指針變量名- 成員名 (*指針變量名).成員名 例如:struct student char name12; char sex; stuct date birthday; float sc4; std,arr5,*ps;,ps= std.sex ps-sex (*ps).sex ps-sc2 函數(shù)之間結(jié)構(gòu)體變量的數(shù)據(jù)傳遞 和普通其他簡單數(shù)據(jù)類型相同. (1)向函數(shù)傳遞結(jié)構(gòu)體變量中的單個成員數(shù)據(jù) (2)向函數(shù)傳遞整個結(jié)構(gòu)體變量中的數(shù)據(jù)。 (3)傳遞結(jié)構(gòu)體變量的地址(指針)。,例題14.1 #include typeof structchar s10;int t;ST getdata(ST *p)scanf(“%s%d”,p-s, (4)向函數(shù)傳遞結(jié)構(gòu)體數(shù)組名,(5)函數(shù)返回值是結(jié)構(gòu)體類型,(6)函數(shù)返回值是結(jié)構(gòu)體變量指針,三、利用結(jié)構(gòu)體變量構(gòu)成鏈表,鏈表作為一種常用的、能夠?qū)崿F(xiàn)動態(tài)存儲分配的數(shù)據(jù)結(jié)構(gòu),在數(shù)據(jù)結(jié)構(gòu)課程中有詳細介紹。為方便沒有學過數(shù)據(jù)結(jié)構(gòu)的讀者,本書從應(yīng)用角度,對鏈表作一簡單介紹。 頭指針變量head指向鏈表的首結(jié)點。 每個結(jié)點由2個域組成: 1)數(shù)據(jù)域存儲結(jié)點本身的信息。 2)指針域指向后繼結(jié)點的指針。 尾結(jié)點的指針域置為“NULL(空)”,作為鏈表結(jié)束的標志,鏈表概述,數(shù)組,順序存儲結(jié)構(gòu),隨機存取,邏輯關(guān)系上相鄰的兩個元素在物理位置上也相鄰,1.數(shù)組的致命弱點:,(1)在對數(shù)組進行插入或刪除操作時,需移動大量數(shù)組元素,(2)在數(shù)組的長度是固定的而且必須預(yù)先定義,數(shù)組的長度難以縮放,對長度變化較大的數(shù)據(jù)對象要預(yù)先按最大空間分配,使存儲空間不能得到充分利用,在單鏈表,通常稱它的數(shù)據(jù)元素為結(jié)點,每個結(jié)點都是一個結(jié)構(gòu)體,至少包括兩個成員:存儲數(shù)據(jù)元素信息的成員稱為數(shù)據(jù)域;存儲直接后繼結(jié)點存儲位置的成員稱為指針域.,顯然,鏈表結(jié)點的指針域存放的地址類型與它自身的類型是相同的。,這就是C語言中較為特殊的遞歸結(jié)構(gòu)體或自引用結(jié)構(gòu)體,這種結(jié)構(gòu)體具指向自身結(jié)構(gòu)體的指針,一般在實現(xiàn)鏈表、樹等數(shù)據(jù)結(jié)構(gòu)時會用到這種特殊的結(jié)構(gòu)體。,每個鏈表都有一個“頭指針”head,整個鏈表的訪問必須從頭指針開始進行,頭指針指示鏈表中的第一個結(jié)點的存儲位置,習慣上將“頭指針”head指示的鏈表簡稱為鏈表head,下同。同時,由于最后一個數(shù)據(jù)元素沒有直接后繼結(jié)點,則鏈表中最后一個結(jié)點的指針為“空”(NULL,即空地址)。,要使用鏈表,首先應(yīng)定義結(jié)點的類型,再定義相應(yīng)的結(jié)構(gòu)體變量。例如,前面鏈表中結(jié)點的結(jié)構(gòu)類型可以定義為: struct student char name10; struct student *next; ; 其中,next為指針變量,其類型為結(jié)構(gòu)體類型student,它可存儲一個student結(jié)構(gòu)體類型變量的地址,即實現(xiàn)鏈表中指向下一個結(jié)點的指針域。,這是一個遞歸定義,它在結(jié)構(gòu)體student的定義未完成時又引用它定義其它的變量(指針變量)。,單向鏈表,單行鏈表的建立 操作步驟:(1)讀取數(shù)據(jù)(3)生成新節(jié)點(3)將數(shù)據(jù)存入節(jié)點的成員變量中(4)將新的節(jié)點插入到鏈表中。,2.單向表的插入,(3)遍歷鏈表,(4)刪除單向鏈表的節(jié)點,q-next=p-next;free(p);,三、共同體 類型說明: union 共同體表示名 類型名1 共同體成員名1; 類型名n 共同體成員名n; ; 例如: Union un_1 int i;float x;char ch;,共同體變量的定義 union un_1int i;float x;char ch;s1,s2,*p; 注意: (1)共同體變量所有成員共享存儲空間。與結(jié)構(gòu)體區(qū)別:結(jié)構(gòu)體的每個成員分別占有獨立的存儲空間;而共同體重所有的成員共享一段公共的存儲空間;例如un_1類型變量s1的存儲如下: (2)共同體變量中所有成員的首地址與該變量地址相同。如&s1=&s1.i=&s1.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 荒山承包合同書9篇
- 承包汽修廠合同協(xié)議書
- 王琳離婚協(xié)議書
- 英超交易協(xié)議書
- 消費者簽定書面協(xié)議書
- 律師事務(wù)所收費協(xié)議書
- 游客旅行社合同協(xié)議書
- 合同解除及付款協(xié)議書
- 電器店合作經(jīng)營協(xié)議書
- 模塑板安裝合同協(xié)議書
- 老年醫(yī)學科臨床營養(yǎng)管理流程
- 初三上學期自我陳述報告范文800字
- 2023年中考物理專題復(fù)習:《電磁學》實驗題
- 腹部CT斷層解剖結(jié)構(gòu)肝胰腺
- 建平磷鐵礦業(yè)有限公司磷(含磁鐵磷灰石)礦礦山地質(zhì)環(huán)境保護與土地復(fù)墾方案
- DB22∕T 3181-2020 公路水路行業(yè)安全生產(chǎn)風險分級管控和隱患排查治理雙重預(yù)防機制建設(shè)通用規(guī)范
- GB/T 36713-2018能源管理體系能源基準和能源績效參數(shù)
- GB/T 25068.1-2020信息技術(shù)安全技術(shù)網(wǎng)絡(luò)安全第1部分:綜述和概念
- “二級甲等婦幼保健院”評審匯報材料
- 《狼王夢》讀書分享PPT
- 三年級美術(shù)下冊第10課《快樂的節(jié)日》優(yōu)秀課件1人教版
評論
0/150
提交評論