




已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第十四章、結構體、共同體和用戶定義類型,14.1 結構體與共用體類型數(shù)據(jù)的定義方法和引用方法,一、用typedef說明一種新的類型名 格式:typedef 類型名 標識符; 例子:typedef int INTEGER; INTEGER m,n;/等價于int m,n; Typedef char* CHARP; CHARP p;/等價于char* p;,二、結構體類型 一般格式: struct 結構體標識符名 類型名1 結構體成員名表1; 類型名2 結構體成員名表2; 類型名n 結構體成員名表n; ; 例如: struct date int year,month,day;,注意: 1、類型名1-類型名n不僅可以是簡單數(shù)據(jù)類型,也可以復雜的構造類型,包括結構類型。 例如: struct student char name12; char sex; stuct date birthday; float sc4; ; 2、結構體類型只是說明了這種類型結構的模式,這時沒有分配內(nèi)存空間。,結構體類型變量、數(shù)組和指針變量的定義 (1)緊跟在機構體類型說明之后 例如: struct student char name12; char sex; stuct date birthday; float sc4; std,pers3,*pstd;,結構體類型變量、數(shù)組和指針變量的定義 (2)無名結構體類型之后 例如: struct std,pers3,*pstd; (3)先說明結構體類型,再單獨進行變量定義 例如: struct ;,struct student std,pers3,*pstd; (4)用typedef typedef struct char name12; char sex; struct date birthday; float sc4; STREC; STREC std,pers3,*pstd;,給結構體變量、數(shù)組賦初值 1、給結構體變量賦初值 所賦初值順序放在花括號種,結構體成員順序一一賦值,對于為給初值的成員系統(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、結構體數(shù)組賦初值,例: struct bookcard char num5; float money; bk3= “NO.1”,35.5, “NO.2”,25.0, “NO.3”,55.7; 結構體類型變量的引用 在定義了結構體變量后,可以采用下列方法引用結構體類型的變量: 結構體變量名.成員名 這里.是成員(分量)運算符,它在所有的運算符中優(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ù)之間結構體變量的數(shù)據(jù)傳遞 和普通其他簡單數(shù)據(jù)類型相同. (1)向函數(shù)傳遞結構體變量中的單個成員數(shù)據(jù) (2)向函數(shù)傳遞整個結構體變量中的數(shù)據(jù)。 (3)傳遞結構體變量的地址(指針)。,例題14.1 #include typeof structchar s10;int t;ST getdata(ST *p)scanf(“%s%d”,p-s, (4)向函數(shù)傳遞結構體數(shù)組名,(5)函數(shù)返回值是結構體類型,(6)函數(shù)返回值是結構體變量指針,三、利用結構體變量構成鏈表,鏈表作為一種常用的、能夠?qū)崿F(xiàn)動態(tài)存儲分配的數(shù)據(jù)結構,在數(shù)據(jù)結構課程中有詳細介紹。為方便沒有學過數(shù)據(jù)結構的讀者,本書從應用角度,對鏈表作一簡單介紹。 頭指針變量head指向鏈表的首結點。 每個結點由2個域組成: 1)數(shù)據(jù)域存儲結點本身的信息。 2)指針域指向后繼結點的指針。 尾結點的指針域置為“NULL(空)”,作為鏈表結束的標志,鏈表概述,數(shù)組,順序存儲結構,隨機存取,邏輯關系上相鄰的兩個元素在物理位置上也相鄰,1.數(shù)組的致命弱點:,(1)在對數(shù)組進行插入或刪除操作時,需移動大量數(shù)組元素,(2)在數(shù)組的長度是固定的而且必須預先定義,數(shù)組的長度難以縮放,對長度變化較大的數(shù)據(jù)對象要預先按最大空間分配,使存儲空間不能得到充分利用,在單鏈表,通常稱它的數(shù)據(jù)元素為結點,每個結點都是一個結構體,至少包括兩個成員:存儲數(shù)據(jù)元素信息的成員稱為數(shù)據(jù)域;存儲直接后繼結點存儲位置的成員稱為指針域.,顯然,鏈表結點的指針域存放的地址類型與它自身的類型是相同的。,這就是C語言中較為特殊的遞歸結構體或自引用結構體,這種結構體具指向自身結構體的指針,一般在實現(xiàn)鏈表、樹等數(shù)據(jù)結構時會用到這種特殊的結構體。,每個鏈表都有一個“頭指針”head,整個鏈表的訪問必須從頭指針開始進行,頭指針指示鏈表中的第一個結點的存儲位置,習慣上將“頭指針”head指示的鏈表簡稱為鏈表head,下同。同時,由于最后一個數(shù)據(jù)元素沒有直接后繼結點,則鏈表中最后一個結點的指針為“空”(NULL,即空地址)。,要使用鏈表,首先應定義結點的類型,再定義相應的結構體變量。例如,前面鏈表中結點的結構類型可以定義為: struct student char name10; struct student *next; ; 其中,next為指針變量,其類型為結構體類型student,它可存儲一個student結構體類型變量的地址,即實現(xiàn)鏈表中指向下一個結點的指針域。,這是一個遞歸定義,它在結構體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)共同體變量所有成員共享存儲空間。與結構體區(qū)別:結構體的每個成員分別占有獨立的存儲空間;而共同體重所有的成員共享一段公共的存儲空間;例如un_1類型變量s1的存儲如下: (2)共同體變量中所有成員的首地址與該變量地址相同。如&s1=&s1.i=&s1.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州大學《混凝土結構原理》2023-2024學年第一學期期末試卷
- 湖州學院《音樂基礎2》2023-2024學年第二學期期末試卷
- 浙江省臺州市溫嶺區(qū)2024-2025學年五年級數(shù)學第二學期期末綜合測試模擬試題含答案
- 保研面試自我介紹
- 皖江工學院《焊接檢驗與質(zhì)量控制》2023-2024學年第二學期期末試卷
- 云南省大理白族自治州漾濞彝族自治縣2025年三年級數(shù)學第二學期期末達標檢測試題含解析
- 常州大學《現(xiàn)代漢語下》2023-2024學年第二學期期末試卷
- 河池學院《宏觀經(jīng)濟學(1)》2023-2024學年第二學期期末試卷
- 山東電力高等??茖W?!禤組網(wǎng)課程設計》2023-2024學年第一學期期末試卷
- 武漢外語外事職業(yè)學院《文獻檢索與科技論文寫作》2023-2024學年第二學期期末試卷
- TCCIAT 0043-2022 建筑工程滲漏治理技術規(guī)程
- 初中美術七年級下冊《第4課扮靚生活的花卉紋樣》課件
- 土建、裝飾、維修改造等零星工程施工組織方案設計技術標范文
- 宮頸癌病歷書寫模板
- summary-writing-概要寫作-優(yōu)質(zhì)課件
- 芭蕾基訓課程課時教案
- T∕CIC 049-2021 水泥窯用固體替代燃料
- 部編版高中語文必修下冊第八單元《單元導讀》教學設計
- 高桿照明燈檢修維護規(guī)程
- 科室急救備用藥品領用補充工作流程
- GB_T 16986-2018 商品條碼 應用標識符(高清正版)
評論
0/150
提交評論