已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第十四章、結(jié)構(gòu)體、共同體和用戶定義類型,14.1 結(jié)構(gòu)體與共用體類型數(shù)據(jù)的定義方法和引用方法,一、用typedef說(shuō)明一種新的類型名 格式:typedef 類型名 標(biāo)識(shí)符; 例子:typedef int INTEGER; INTEGER m,n;/等價(jià)于int m,n; Typedef char* CHARP; CHARP p;/等價(jià)于char* p;,二、結(jié)構(gòu)體類型 一般格式: struct 結(jié)構(gòu)體標(biāo)識(shí)符名 類型名1 結(jié)構(gòu)體成員名表1; 類型名2 結(jié)構(gòu)體成員名表2; 類型名n 結(jié)構(gòu)體成員名表n; ; 例如: struct date int year,month,day;,注意: 1、類型名1-類型名n不僅可以是簡(jiǎn)單數(shù)據(jù)類型,也可以復(fù)雜的構(gòu)造類型,包括結(jié)構(gòu)類型。 例如: struct student char name12; char sex; stuct date birthday; float sc4; ; 2、結(jié)構(gòu)體類型只是說(shuō)明了這種類型結(jié)構(gòu)的模式,這時(shí)沒有分配內(nèi)存空間。,結(jié)構(gòu)體類型變量、數(shù)組和指針變量的定義 (1)緊跟在機(jī)構(gòu)體類型說(shuō)明之后 例如: struct student char name12; char sex; stuct date birthday; float sc4; std,pers3,*pstd;,結(jié)構(gòu)體類型變量、數(shù)組和指針變量的定義 (2)無(wú)名結(jié)構(gòu)體類型之后 例如: struct std,pers3,*pstd; (3)先說(shuō)明結(jié)構(gòu)體類型,再單獨(dú)進(jìn)行變量定義 例如: 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)體變量賦初值 所賦初值順序放在花括號(hào)種,結(jié)構(gòu)體成員順序一一賦值,對(duì)于為給初值的成員系統(tǒng)自動(dò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ùn)算符,它在所有的運(yùn)算符中優(yōu)先級(jí)最高。,對(duì)于指針 指針變量名- 成員名 (*指針變量名).成員名 例如: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ù)傳遞 和普通其他簡(jiǎn)單數(shù)據(jù)類型相同. (1)向函數(shù)傳遞結(jié)構(gòu)體變量中的單個(gè)成員數(shù)據(jù) (2)向函數(shù)傳遞整個(gè)結(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)動(dòng)態(tài)存儲(chǔ)分配的數(shù)據(jù)結(jié)構(gòu),在數(shù)據(jù)結(jié)構(gòu)課程中有詳細(xì)介紹。為方便沒有學(xué)過(guò)數(shù)據(jù)結(jié)構(gòu)的讀者,本書從應(yīng)用角度,對(duì)鏈表作一簡(jiǎn)單介紹。 頭指針變量head指向鏈表的首結(jié)點(diǎn)。 每個(gè)結(jié)點(diǎn)由2個(gè)域組成: 1)數(shù)據(jù)域存儲(chǔ)結(jié)點(diǎn)本身的信息。 2)指針域指向后繼結(jié)點(diǎn)的指針。 尾結(jié)點(diǎn)的指針域置為“NULL(空)”,作為鏈表結(jié)束的標(biāo)志,鏈表概述,數(shù)組,順序存儲(chǔ)結(jié)構(gòu),隨機(jī)存取,邏輯關(guān)系上相鄰的兩個(gè)元素在物理位置上也相鄰,1.數(shù)組的致命弱點(diǎn):,(1)在對(duì)數(shù)組進(jìn)行插入或刪除操作時(shí),需移動(dòng)大量數(shù)組元素,(2)在數(shù)組的長(zhǎng)度是固定的而且必須預(yù)先定義,數(shù)組的長(zhǎng)度難以縮放,對(duì)長(zhǎng)度變化較大的數(shù)據(jù)對(duì)象要預(yù)先按最大空間分配,使存儲(chǔ)空間不能得到充分利用,在單鏈表,通常稱它的數(shù)據(jù)元素為結(jié)點(diǎn),每個(gè)結(jié)點(diǎn)都是一個(gè)結(jié)構(gòu)體,至少包括兩個(gè)成員:存儲(chǔ)數(shù)據(jù)元素信息的成員稱為數(shù)據(jù)域;存儲(chǔ)直接后繼結(jié)點(diǎn)存儲(chǔ)位置的成員稱為指針域.,顯然,鏈表結(jié)點(diǎn)的指針域存放的地址類型與它自身的類型是相同的。,這就是C語(yǔ)言中較為特殊的遞歸結(jié)構(gòu)體或自引用結(jié)構(gòu)體,這種結(jié)構(gòu)體具指向自身結(jié)構(gòu)體的指針,一般在實(shí)現(xiàn)鏈表、樹等數(shù)據(jù)結(jié)構(gòu)時(shí)會(huì)用到這種特殊的結(jié)構(gòu)體。,每個(gè)鏈表都有一個(gè)“頭指針”head,整個(gè)鏈表的訪問(wèn)必須從頭指針開始進(jìn)行,頭指針指示鏈表中的第一個(gè)結(jié)點(diǎn)的存儲(chǔ)位置,習(xí)慣上將“頭指針”head指示的鏈表簡(jiǎn)稱為鏈表head,下同。同時(shí),由于最后一個(gè)數(shù)據(jù)元素沒有直接后繼結(jié)點(diǎn),則鏈表中最后一個(gè)結(jié)點(diǎn)的指針為“空”(NULL,即空地址)。,要使用鏈表,首先應(yīng)定義結(jié)點(diǎn)的類型,再定義相應(yīng)的結(jié)構(gòu)體變量。例如,前面鏈表中結(jié)點(diǎn)的結(jié)構(gòu)類型可以定義為: struct student char name10; struct student *next; ; 其中,next為指針變量,其類型為結(jié)構(gòu)體類型student,它可存儲(chǔ)一個(gè)student結(jié)構(gòu)體類型變量的地址,即實(shí)現(xiàn)鏈表中指向下一個(gè)結(jié)點(diǎn)的指針域。,這是一個(gè)遞歸定義,它在結(jié)構(gòu)體student的定義未完成時(shí)又引用它定義其它的變量(指針變量)。,單向鏈表,單行鏈表的建立 操作步驟:(1)讀取數(shù)據(jù)(3)生成新節(jié)點(diǎn)(3)將數(shù)據(jù)存入節(jié)點(diǎn)的成員變量中(4)將新的節(jié)點(diǎn)插入到鏈表中。,2.單向表的插入,(3)遍歷鏈表,(4)刪除單向鏈表的節(jié)點(diǎn),q-next=p-next;free(p);,三、共同體 類型說(shuō)明: 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)共同體變量所有成員共享存儲(chǔ)空間。與結(jié)構(gòu)體區(qū)別:結(jié)構(gòu)體的每個(gè)成員分別占有獨(dú)立的存儲(chǔ)空間;而共同體重所有的成員共享一段公共的存儲(chǔ)空間;例如un_1類型變量s1的存儲(chǔ)如下: (2)共同體變量中所有成員的首地址與該變量地址相同。如&s1=&s1.i=&s1.
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 好的故事課件
- 2024年淮北職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)驗(yàn)歷年參考題庫(kù)(頻考版)含答案解析
- 武術(shù)五步拳身體素質(zhì)練習(xí)教學(xué)設(shè)計(jì)
- 2024年海南健康管理職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)驗(yàn)歷年參考題庫(kù)(頻考版)含答案解析
- 【核心素養(yǎng)】37核能-浙教版科學(xué)九上探究學(xué)案(原卷版)
- 2024年浙江體育職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試歷年參考題庫(kù)含答案解析
- 2024年泰山職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)驗(yàn)歷年參考題庫(kù)(頻考版)含答案解析
- 2024年陽(yáng)曲縣精神病醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫(kù)頻考點(diǎn)附帶答案
- 2024年河南建筑職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試歷年參考題庫(kù)含答案解析
- 2024年河北公安警察職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試歷年參考題庫(kù)含答案解析
- 公司費(fèi)用預(yù)算表格模板(詳細(xì)版)
- 華為經(jīng)營(yíng)管理-華為市場(chǎng)營(yíng)銷體系(6版)
- 2023年中國(guó)育齡女性生殖健康研究報(bào)告
- 鋼結(jié)構(gòu)加工廠考察報(bào)告
- 發(fā)電機(jī)檢修作業(yè)指導(dǎo)書
- 薪酬與福利管理實(shí)務(wù)-習(xí)題答案 第五版
- 廢舊物資處置申請(qǐng)表
- GB/T 37234-2018文件鑒定通用規(guī)范
- GB/T 31888-2015中小學(xué)生校服
- 質(zhì)量檢查考核辦法
- 云南省普通初中學(xué)生成長(zhǎng)記錄-基本素質(zhì)發(fā)展初一-初三
評(píng)論
0/150
提交評(píng)論