




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、結(jié)構(gòu)體共同體和用戶定義類型一、用一、用typedef說明一種新的類型名說明一種新的類型名格式:格式:typedef 類型名類型名 標(biāo)識符標(biāo)識符;例子:例子:typedef int INTEGER; INTEGER m,n;/等價于等價于int m,n; Typedef char* CHARP; CHARP p;/等價于等價于char* p;二、結(jié)構(gòu)體類型二、結(jié)構(gòu)體類型一般格式:一般格式:struct 結(jié)構(gòu)體標(biāo)識符名結(jié)構(gòu)體標(biāo)識符名類型名類型名1 結(jié)構(gòu)體成員名表結(jié)構(gòu)體成員名表1;類型名類型名2 結(jié)構(gòu)體成員名表結(jié)構(gòu)體成員名表2;類型名類型名n 結(jié)構(gòu)體成員名表結(jié)構(gòu)體成員名表n;;例如:例如: stru
2、ct dateint year,month,day;注意:注意:1、類型名、類型名1-類型名類型名n不僅可以是簡單數(shù)據(jù)類型,也可以不僅可以是簡單數(shù)據(jù)類型,也可以復(fù)雜的構(gòu)造類型,包括結(jié)構(gòu)類型。復(fù)雜的構(gòu)造類型,包括結(jié)構(gòu)類型。例如:例如:struct studentchar name12;char sex;stuct date birthday;float sc4;2、結(jié)構(gòu)體類型只是說明了這種類型結(jié)構(gòu)的模式,這時沒、結(jié)構(gòu)體類型只是說明了這種類型結(jié)構(gòu)的模式,這時沒有分配內(nèi)存空間。有分配內(nèi)存空間。結(jié)構(gòu)體類型變量、數(shù)組和指針變量的定義結(jié)構(gòu)體類型變量、數(shù)組和指針變量的定義(1)緊跟在機(jī)構(gòu)體類型說明之后)緊跟
3、在機(jī)構(gòu)體類型說明之后例如:例如:struct studentchar name12;char sex;stuct date birthday;float sc4;std,pers3,*pstd;結(jié)構(gòu)體類型變量、數(shù)組和指針變量的定義結(jié)構(gòu)體類型變量、數(shù)組和指針變量的定義(2)無名結(jié)構(gòu)體類型之后)無名結(jié)構(gòu)體類型之后例如:例如:struct std,pers3,*pstd;(3)先說明結(jié)構(gòu)體類型,再單獨(dú)進(jìn)行變量定義先說明結(jié)構(gòu)體類型,再單獨(dú)進(jìn)行變量定義例如:例如: struct ;struct student std,pers3,*pstd;(4)用typedeftypedef structchar n
4、ame12;char sex;struct date birthday;float sc4;STREC;STREC std,pers3,*pstd;給結(jié)構(gòu)體變量、數(shù)組賦初值給結(jié)構(gòu)體變量、數(shù)組賦初值1、給結(jié)構(gòu)體變量賦初值、給結(jié)構(gòu)體變量賦初值 所賦初值順序放在花括號種,結(jié)構(gòu)體成員順序一一賦所賦初值順序放在花括號種,結(jié)構(gòu)體成員順序一一賦值,對于為給初值的成員系統(tǒng)自動給定值值,對于為給初值的成員系統(tǒng)自動給定值例如:例如:struct studentchar name12;char sex;stuct date birthday;float sc4;std=“Li Ming”,M,1962,5,10,8
5、8,76,85.5,90;2、結(jié)構(gòu)體數(shù)組賦初值、結(jié)構(gòu)體數(shù)組賦初值例:例:struct bookcardchar 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)體變量后,可以采用下列方法引用結(jié)構(gòu)體類型的變量:結(jié)構(gòu)體類型的變量: 結(jié)構(gòu)體變量名結(jié)構(gòu)體變量名.成員名成員名 這里這里.是成員是成員(分量分量)運(yùn)算符,它在所有的運(yùn)運(yùn)算符,它在所有的運(yùn)算符中優(yōu)先級最高。算符中優(yōu)先級最高。 對于指針指針變量名- 成員名(*指針變量名).成員
6、名例如:struct studentchar name12;char sex;stuct date birthday;float sc4;std,arr5,*ps;ps=&std;std.sexps-sex(*ps).sexps-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 #includetypeof structchar s10;int t;STgetdata(ST *p)scanf(“%s%d”,p-s,&p-t);main()ST a;g
7、etdata(&a);printf(“%s,%dn”,a.s,a.t);(4)向函數(shù)傳遞結(jié)構(gòu)體數(shù)組名(5)函數(shù)返回值是結(jié)構(gòu)體類型(6)函數(shù)返回值是結(jié)構(gòu)體變量指針 鏈表作為一種常用的、能夠?qū)崿F(xiàn)動態(tài)存儲分配的數(shù)據(jù)結(jié)構(gòu),在數(shù)據(jù)結(jié)構(gòu)課程中有詳細(xì)介紹。為方便沒有學(xué)過數(shù)據(jù)結(jié)構(gòu)的讀者,本書從應(yīng)用角度,對鏈表作一簡單介紹。l頭指針變量head指向鏈表的首結(jié)點(diǎn)。l每個結(jié)點(diǎn)由2個域組成: 1)數(shù)據(jù)域存儲結(jié)點(diǎn)本身的信息。 2)指針域指向后繼結(jié)點(diǎn)的指針。l尾結(jié)點(diǎn)的指針域置為“NULL(空)”,作為鏈表結(jié)束的標(biāo)志 鏈表概述鏈表概述 數(shù)組數(shù)組 順序存儲結(jié)構(gòu)順序存儲結(jié)構(gòu) 隨機(jī)存取隨機(jī)存取 邏輯關(guān)系上相鄰的兩個元素在物理位置
8、上也相鄰邏輯關(guān)系上相鄰的兩個元素在物理位置上也相鄰1.1.數(shù)組的致命弱點(diǎn):數(shù)組的致命弱點(diǎn):(1)(1)在對數(shù)組進(jìn)行插入或刪除操作時,需移動大量數(shù)組元素在對數(shù)組進(jìn)行插入或刪除操作時,需移動大量數(shù)組元素(2)(2)在數(shù)組的長度是固定的而且必須預(yù)先定義,數(shù)組的長在數(shù)組的長度是固定的而且必須預(yù)先定義,數(shù)組的長度難以縮放,對長度變化較大的數(shù)據(jù)對象要預(yù)先按最大空度難以縮放,對長度變化較大的數(shù)據(jù)對象要預(yù)先按最大空間分配,使存儲空間不能得到充分利用間分配,使存儲空間不能得到充分利用 在單鏈表,通常稱它的數(shù)據(jù)元素為結(jié)點(diǎn),每個在單鏈表,通常稱它的數(shù)據(jù)元素為結(jié)點(diǎn),每個結(jié)點(diǎn)都是一個結(jié)構(gòu)體,至少包括兩個成員:存儲數(shù)結(jié)點(diǎn)
9、都是一個結(jié)構(gòu)體,至少包括兩個成員:存儲數(shù)據(jù)元素信息的成員稱為數(shù)據(jù)域;存儲直接后繼結(jié)點(diǎn)據(jù)元素信息的成員稱為數(shù)據(jù)域;存儲直接后繼結(jié)點(diǎn)存儲位置的成員稱為指針域存儲位置的成員稱為指針域. . 顯然,鏈表結(jié)點(diǎn)的指針域存放的地址類型與它自身顯然,鏈表結(jié)點(diǎn)的指針域存放的地址類型與它自身的類型是相同的。的類型是相同的。 這就是這就是C C語言中較為特殊的遞歸結(jié)構(gòu)體或自引用語言中較為特殊的遞歸結(jié)構(gòu)體或自引用結(jié)構(gòu)體,這種結(jié)構(gòu)體具指向自身結(jié)構(gòu)體的指針,一結(jié)構(gòu)體,這種結(jié)構(gòu)體具指向自身結(jié)構(gòu)體的指針,一般在實(shí)現(xiàn)鏈表、樹等數(shù)據(jù)結(jié)構(gòu)時會用到這種特殊的般在實(shí)現(xiàn)鏈表、樹等數(shù)據(jù)結(jié)構(gòu)時會用到這種特殊的結(jié)構(gòu)體。結(jié)構(gòu)體。每個鏈表都有一個
10、每個鏈表都有一個“頭指針頭指針”headhead,整個鏈表的訪問,整個鏈表的訪問必須從頭指針開始進(jìn)行,頭指針指示鏈表中的第一個必須從頭指針開始進(jìn)行,頭指針指示鏈表中的第一個結(jié)點(diǎn)的存儲位置,習(xí)慣上將結(jié)點(diǎn)的存儲位置,習(xí)慣上將“頭指針頭指針”headhead指示的鏈指示的鏈表簡稱為鏈表表簡稱為鏈表headhead,下同。同時,由于最后一個數(shù)據(jù),下同。同時,由于最后一個數(shù)據(jù)元素沒有直接后繼結(jié)點(diǎn),則鏈表中最后一個結(jié)點(diǎn)的指元素沒有直接后繼結(jié)點(diǎn),則鏈表中最后一個結(jié)點(diǎn)的指針為針為“空空”(NULLNULL,即空地址)。,即空地址)。 要使用鏈表,首先應(yīng)定義結(jié)點(diǎn)的類型,再定義相應(yīng)要使用鏈表,首先應(yīng)定義結(jié)點(diǎn)的類型
11、,再定義相應(yīng)的結(jié)構(gòu)體變量。例如,前面鏈表中結(jié)點(diǎn)的結(jié)構(gòu)類型可的結(jié)構(gòu)體變量。例如,前面鏈表中結(jié)點(diǎn)的結(jié)構(gòu)類型可以定義為:以定義為:struct studentstruct student char name10 char name10; struct student struct student * *nextnext; ; 其中,其中,nextnext為指針變量,其類型為結(jié)構(gòu)體類型為指針變量,其類型為結(jié)構(gòu)體類型studentstudent,它可存儲一個,它可存儲一個studentstudent結(jié)構(gòu)體類型變量的地結(jié)構(gòu)體類型變量的地址,即實(shí)現(xiàn)鏈表中指向下一個結(jié)點(diǎn)的指針域。址,即實(shí)現(xiàn)鏈表中指向下一個結(jié)點(diǎn)
12、的指針域。 這是一個遞歸定義,它在結(jié)構(gòu)體這是一個遞歸定義,它在結(jié)構(gòu)體studentstudent的定義的定義未完成時又引用它定義其它的變量(指針變量)。未完成時又引用它定義其它的變量(指針變量)。 單行鏈表的建立操作步驟:(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);共同體變量的定義union un_1int i;float x;char ch;s1,s2,*p;注意:(1)共同體變量所有成員共享存儲空間。與結(jié)構(gòu)體區(qū)別:結(jié)構(gòu)體的每個成員分別占有獨(dú)立的存儲空間;而共同體重所有的成員共享一段公共的存儲空間;例如un_1類型變
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 員工職業(yè)發(fā)展與工作計劃的結(jié)合
- 提升創(chuàng)造力的團(tuán)隊(duì)管理策略計劃
- Unit 5 The colourful world Lesson 2(教學(xué)設(shè)計)-2024-2025學(xué)年人教PEP版(2024)英語三年級上冊
- 某村村民高血壓發(fā)病率的調(diào)查
- 第1章相交線和平行線單元教學(xué)設(shè)計 2024-2025學(xué)年浙教版數(shù)學(xué)七年級下冊標(biāo)簽標(biāo)題
- 2025年南昌年貨運(yùn)從業(yè)資格證考試從業(yè)從業(yè)資格資格題庫及答案
- 2025年清遠(yuǎn)貨物從業(yè)資格證考試
- 2025年宿州貨運(yùn)從業(yè)資格證模擬考試下載
- 2025年那曲貨運(yùn)從業(yè)資格證考試試題及答案
- 2025年陜西從業(yè)資格貨運(yùn)資格考試題庫及答案解析
- 曲靖市出租汽車從業(yè)資格證區(qū)域科目考試題(附答案)
- 2025年安徽城市管理職業(yè)學(xué)院單招職業(yè)技能考試題庫匯編
- 2025年湖南國防工業(yè)職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫及參考答案
- 2025年湖南水利水電職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫附答案
- 2025年河南建筑職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫審定版
- 2025年湖南食品藥品職業(yè)學(xué)院單招職業(yè)傾向性測試題庫參考答案
- 2025年湖南水利水電職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫1套
- 2025年家政服務(wù)策劃免責(zé)聲明協(xié)議
- 2025新人教版語文七年級下冊《第四單元》大單元整體教學(xué)設(shè)計2022課標(biāo)
- 2024人工智能大模型技術(shù)財務(wù)應(yīng)用藍(lán)皮書
- DB51T 2572-2019 干旱河谷造林技術(shù)規(guī)程
評論
0/150
提交評論