第十四章結(jié)構(gòu)體_第1頁
第十四章結(jié)構(gòu)體_第2頁
第十四章結(jié)構(gòu)體_第3頁
第十四章結(jié)構(gòu)體_第4頁
第十四章結(jié)構(gòu)體_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第十四章 結(jié)構(gòu)體typedef 自定義數(shù)據(jù)類型 typedef 結(jié)構(gòu)體 struct 共用體 union C語言允許typedef說明一種新類型名,說明新類型名的語句一般形式為: typedef 類型名 標(biāo)識(shí)符; 類型名必須是在此語句之前已有定義的類型標(biāo)識(shí)符。“標(biāo)識(shí)符”是一個(gè)用戶定義標(biāo)識(shí)符,用作新的類型名。 typedef語句的作用僅僅是用“標(biāo)識(shí)符”來代表已存在的“類型名”,并未產(chǎn)生新的數(shù)據(jù)類型,原有類型名依然有效。 typedef int MYINT;結(jié)構(gòu)體類型 一個(gè)結(jié)構(gòu)體類型由若干個(gè)稱為成員(或域)的成分組成。 不同的結(jié)構(gòu)體類型可根據(jù)需要,由不同的成員組成。對(duì)于某個(gè)具體的結(jié)構(gòu)體類型,成員的

2、數(shù)量必須固定,這一點(diǎn)與數(shù)組相同;但該結(jié)構(gòu)體中各個(gè)成員的類型可以不同。 結(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是關(guān)鍵字,是結(jié)構(gòu)體類型的標(biāo)志。其中“結(jié)構(gòu)體標(biāo)識(shí)名”是可選項(xiàng),在說明中可以不出現(xiàn)。 結(jié)構(gòu)體重的成員類型不僅可以是簡單數(shù)據(jù)類型,也可以是構(gòu)造類型,當(dāng)然也可以是某種結(jié)構(gòu)體類型。當(dāng)結(jié)構(gòu)體說明中又包含結(jié)構(gòu)體時(shí),稱為結(jié)構(gòu)體的嵌套。 ANSI C標(biāo)準(zhǔn)規(guī)定結(jié)構(gòu)體至少允許嵌套15層,并且允許內(nèi)嵌結(jié)構(gòu)體成員的名字與外層成員的名字相同。 結(jié)構(gòu)體的說明僅僅定義了一種新的數(shù)據(jù)類型,系統(tǒng)并不分配任何內(nèi)

3、存空間。 結(jié)構(gòu)體變量的定義 1.緊跟在結(jié)構(gòu)體類型說明之后進(jìn)行定義。 struct student char name12; int age; std,pers3,*pstd; 2.在說明一個(gè)無名結(jié)構(gòu)體類型的同時(shí),直接進(jìn)行定義。 3.先說明結(jié)構(gòu)體類型,在單獨(dú)進(jìn)行變量定義。 4.使用typedef說明一個(gè)結(jié)構(gòu)體類型名,再用新類型名來定義變量。結(jié)構(gòu)體變量,數(shù)組賦初值 結(jié)構(gòu)體變量賦初值 struct student char name12; char sex; struct date birthday; float sc4; std=“l(fā)i ming”,M,1962,5,10,88,76,85.5,9

4、0; 結(jié)構(gòu)體數(shù)組賦初值 struct bookcard/一維數(shù)組 char num5; Float money; bk3= “NO.1”,35.5,“NO.2”,25.0,“NO.3”,66.7 ; struct /二維數(shù)組 char ch; int i; float x; arr23=a,1,3e10,a,2,4e10,a,3,5e10, b,1,6e10,b,2,7e10,b,3,8e10 ;結(jié)構(gòu)體變量成員的引用 若已定義結(jié)構(gòu)體變量和基類型為同一結(jié)構(gòu)體類型的指針變量,并使用指針指向該結(jié)構(gòu)體變量.則有三種形式引用結(jié)構(gòu)體變量的成員 1.結(jié)構(gòu)體變量名.成員名 2.指針變量名-成員名 3.(*指針

5、變量名).成員名 結(jié)構(gòu)體變量中的每個(gè)成員都屬于某個(gè)具體的數(shù)據(jù)類型。因此,結(jié)構(gòu)體變量中的每個(gè)成員都可以跟普通變量一樣,對(duì)它進(jìn)行同類型變量所允許的任何操作。使用結(jié)構(gòu)體指針時(shí)的注意事項(xiàng) struct int a;char *s x, *p = &x; +p-a 使得x的成員a增1,而不是p增1.因?yàn)?的優(yōu)先級(jí)高于+,表達(dá)式等價(jià)于+(p-a);使用的時(shí)候最好加上括號(hào),避免理解成(+p)-a. p+-a最好寫成(p+)-a,表示先訪問p所指向變量中的a成員后,p再增1. *p-s引用的是變量x中s所指存儲(chǔ)單元;*p-s+是在引用了變量x中s所指存儲(chǔ)單元之后,使指針s增1;(*p-s)+使變量x中

6、s所指的存儲(chǔ)單元的值增1;*p+-s在訪問了變量x中s所指存儲(chǔ)單元之后,使p增1. 對(duì)于相同類型的結(jié)構(gòu)體變量可以用=進(jìn)行整體賦值函數(shù)之間結(jié)構(gòu)體變量的數(shù)據(jù)傳遞 1.向函數(shù)傳遞結(jié)構(gòu)體變量中單個(gè)成員的數(shù)據(jù) 2.向函數(shù)傳遞整個(gè)結(jié)構(gòu)體變量中的數(shù)據(jù) 注意:形參的應(yīng)該為對(duì)應(yīng)類型的結(jié)構(gòu)體變量,系統(tǒng)將為形參分配對(duì)應(yīng)結(jié)構(gòu)體類型大小的存儲(chǔ)單元。在傳遞實(shí)參時(shí),將實(shí)參中各成員的值一一對(duì)應(yīng)賦給形參中的成員。 3.傳遞結(jié)構(gòu)體變量的地址。對(duì)應(yīng)的實(shí)參應(yīng)該是一個(gè)基類型相同的結(jié)構(gòu)體類型的指針變量。 4.向函數(shù)傳遞結(jié)構(gòu)體數(shù)組名。實(shí)參時(shí)結(jié)構(gòu)體數(shù)組的首地址,對(duì)應(yīng)的實(shí)參應(yīng)該是對(duì)應(yīng)結(jié)構(gòu)體類型的指針變量。 5.函數(shù)返回值是結(jié)構(gòu)體類型 6.函數(shù)

7、返回值是指向結(jié)構(gòu)體變量的指針類型鏈表 當(dāng)一個(gè)結(jié)構(gòu)體中有一個(gè)活多個(gè)成員的基類型就是笨結(jié)構(gòu)體類型時(shí),通常把這種結(jié)構(gòu)體稱為可以“引用自身的結(jié)構(gòu)體”。 typedef struct node /定義節(jié)點(diǎn)類型 int data; struct node *next; NODE; 靜態(tài)鏈表 動(dòng)態(tài)鏈表 單向鏈表單向鏈表 單向鏈表的基本算法,包括鏈表的建立、結(jié)點(diǎn)的訪問、結(jié)點(diǎn)的插入和刪除。 建立帶頭結(jié)點(diǎn)的單向鏈表 1.定義頭結(jié)點(diǎn)指針。 2.讀取數(shù)據(jù)。 3.生成新結(jié)點(diǎn)。 4.將數(shù)據(jù)存入結(jié)點(diǎn)的成員變量中。 5.將新結(jié)點(diǎn)插入到鏈表中。重復(fù)操作25。插入結(jié)點(diǎn) p,q均為指向結(jié)點(diǎn)的指針 1.確定要插入位置p(新結(jié)點(diǎn)只能放到p結(jié)點(diǎn)的后面) 2.新結(jié)點(diǎn)q的next指向p結(jié)點(diǎn)的next指向的結(jié)點(diǎn) 3.p結(jié)點(diǎn)的next指向新結(jié)點(diǎn)q q-next = p-next; p-next = q;刪除結(jié)點(diǎn) p,q均為指向結(jié)點(diǎn)的指針 1.刪除指定的結(jié)點(diǎn)q,必須要先知道q的前一個(gè)結(jié)點(diǎn)p 2.p的next指向q的next,就會(huì)跳過q結(jié)點(diǎn) 3.釋放q結(jié)點(diǎn)所占的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論