孫麗云數(shù)據(jù)結(jié)構(gòu)第2講結(jié)構(gòu)體(補(bǔ)充).ppt_第1頁(yè)
孫麗云數(shù)據(jù)結(jié)構(gòu)第2講結(jié)構(gòu)體(補(bǔ)充).ppt_第2頁(yè)
孫麗云數(shù)據(jù)結(jié)構(gòu)第2講結(jié)構(gòu)體(補(bǔ)充).ppt_第3頁(yè)
孫麗云數(shù)據(jù)結(jié)構(gòu)第2講結(jié)構(gòu)體(補(bǔ)充).ppt_第4頁(yè)
孫麗云數(shù)據(jù)結(jié)構(gòu)第2講結(jié)構(gòu)體(補(bǔ)充).ppt_第5頁(yè)
已閱讀5頁(yè),還剩11頁(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)介

1,概 述,在程序的設(shè)計(jì)中, 會(huì)遇見(jiàn)一些關(guān)系密切、具有內(nèi)在聯(lián)系而數(shù)據(jù)類型不同的數(shù)據(jù)。 例如, 一個(gè)班、一個(gè)年級(jí)或全校學(xué)生的學(xué)籍卡包括他們的學(xué)號(hào)、姓名、性別、年齡、學(xué)習(xí)成績(jī)、地址 等。這些數(shù)據(jù)有的是數(shù)字、有的是字符,其數(shù)據(jù)類型不同, 對(duì)于這樣一類數(shù)據(jù)可以用結(jié)構(gòu)體來(lái)處理。,2,概 述,結(jié)構(gòu)體是不同數(shù)據(jù)類型的數(shù)據(jù)的集合; 結(jié)構(gòu)體是一種數(shù)據(jù)結(jié)構(gòu),它需要用戶根據(jù)自己的需要,按某種規(guī)則定義; 結(jié)構(gòu)體是構(gòu)造類型的數(shù)據(jù)。,3,結(jié)構(gòu)體的說(shuō)明,結(jié)構(gòu)體說(shuō)明的格式:,struct 結(jié)構(gòu)體名 結(jié)構(gòu)體成員表; ;,struct (是保留字)結(jié)構(gòu)體類型標(biāo)識(shí)符。 結(jié)構(gòu)體名(稱結(jié)構(gòu)體類型名)由標(biāo)識(shí)符組成。 大括號(hào)中的結(jié)構(gòu)體成員表, 稱為結(jié)構(gòu)體。 結(jié)構(gòu)體成員表包含若干成員。,成員的表達(dá)形式:,數(shù)據(jù)類型標(biāo)識(shí)符 結(jié)構(gòu)體成員名;,例如: struct date int day; int month; int year; ;,date是結(jié)構(gòu)體名,day、month、year是結(jié)構(gòu)體成員,4,結(jié)構(gòu)體的說(shuō)明,結(jié)構(gòu)體成員可以是簡(jiǎn)單變量、數(shù)組、指針等。 結(jié)構(gòu)體可以嵌套使用, 即一個(gè)結(jié)構(gòu)體變量也可以成 為另一個(gè)結(jié)構(gòu)體的成員。,struct student int num; char name20; char sex; int age; struct date birthday; int mon_name4; int *year; ;,結(jié)構(gòu)體成員是數(shù)組,結(jié)構(gòu)體成員是結(jié)構(gòu)體,結(jié)構(gòu)體成員是指針,例:,5,結(jié)構(gòu)體變量同其它變量一樣也必須先說(shuō)明、定義, 然后才能使用。 結(jié)構(gòu)體變量定義要按照結(jié)構(gòu)體說(shuō)明中的結(jié)構(gòu)體類型, 為被定義的結(jié)構(gòu)體變量分配內(nèi)存單元, 而結(jié)構(gòu)體說(shuō)明不分配內(nèi)存。,結(jié)構(gòu)體變量的定義,6,結(jié)構(gòu)體變量的定義,struct 結(jié)構(gòu)體名 結(jié)構(gòu)體成員表; ; . struct 結(jié)構(gòu)體名 結(jié)構(gòu)體變量名表;,其定義格式為:,例如: struct student int num; char name20; char sex; int age; float score; char addr30; ; struct student student1,student2,student3;,7,結(jié)構(gòu)體成員的引用,用結(jié)構(gòu)體成員運(yùn)算符“.”引用結(jié)構(gòu)體成員格式:,結(jié)構(gòu)體變量名 . 結(jié)構(gòu)體成員,“.” 結(jié)構(gòu)體成員運(yùn)算符,優(yōu)先級(jí)最高,struct student long num; char name20; char sex; int age; float score; char addr30; ;,用結(jié)構(gòu)成員運(yùn)算符“.”引用結(jié)構(gòu)體成員 struct student stu1; struct student stu2; stu1.num=2010001; stu1.sex=M; stu1.age=18; stu1.score=87; strcpy(stu1.addr,“Beijing”);,例:,8,結(jié)構(gòu)體變量的初始化,結(jié)構(gòu)體變量的初始化,就是在定義結(jié)構(gòu)體變量的同時(shí),對(duì)其成員賦初值。,結(jié)構(gòu)體變量初始化的格式:,struct 結(jié)構(gòu)體名 結(jié)構(gòu)體變量名= 初始數(shù)據(jù) ;,與數(shù)組類似,結(jié)構(gòu)體變量只可整體初始化,不可整體賦值。,9,例: struct student long num; char name20; char sex; int age; float score; char addr30; ; struct student stu1=2010001, “Li feng”, M, 18, 87.0, “Beijing”;,struct student long num=2010001; char name20=“Li feng”; char sex=M; int age=18; float score=87.0; char addr30=“Beijing”; stu1,stu2;,不能直接在結(jié)構(gòu)體成員表中對(duì)成員賦初值,10,結(jié)構(gòu)體數(shù)組的概念,結(jié)構(gòu)體數(shù)組是其數(shù)組元素都是具有相同結(jié)構(gòu)體類型的結(jié)構(gòu)體變量。即結(jié)構(gòu)體數(shù)組是結(jié)構(gòu)體變量集合的一種數(shù)組。,例如: 一個(gè)班級(jí)學(xué)生的學(xué)籍卡的數(shù)據(jù)結(jié)構(gòu)如下, 要使用該結(jié)構(gòu)體中每個(gè)學(xué)生的數(shù)據(jù), 就要定義30個(gè)結(jié)構(gòu)體變量(名), 即:stu1, stu2. stu30。這種方法很不方便。由于該例結(jié)構(gòu)體變量名都相同, 就是最后的序號(hào)不同, 這種情況可使用結(jié)構(gòu)體數(shù)組。,struct student int num; char name20; char sex; int age; float score; char addr30; stu1,stu2,stu30;,stu30;,11,例如: static struct student stu30; 例中定義了30個(gè)結(jié)構(gòu)體變量,下標(biāo)0-29(下標(biāo)從0開(kāi)始), 結(jié)構(gòu)體變量是 stu0、stu1、stu2、 .stu29。,結(jié)構(gòu)體數(shù)組也必須先定義或說(shuō)明,后引用。,結(jié)構(gòu)體數(shù)組定義的格式:,struct 結(jié)構(gòu)體名 結(jié)構(gòu)體數(shù)組名 元素個(gè)數(shù);,結(jié)構(gòu)體數(shù)組的定義,12,結(jié)構(gòu)體數(shù)組的初始化,結(jié)構(gòu)體數(shù)組的初始化格式為:,struct 結(jié)構(gòu)體名 結(jié)構(gòu)體數(shù)組名 元素個(gè)數(shù)= 初始化數(shù)據(jù) ;,struct 結(jié)構(gòu)體名 結(jié)構(gòu)體成員表; 結(jié)構(gòu)體數(shù)組名 元素個(gè)數(shù)= 初始化數(shù)據(jù) ;,或,結(jié)構(gòu)體即“struct 結(jié)構(gòu)體名”是已被說(shuō)明的結(jié)構(gòu)體類型。 初始化的數(shù)據(jù)的個(gè)數(shù)與結(jié)構(gòu)體數(shù)組元素的個(gè)數(shù)相同及數(shù)據(jù)類型相匹配。 為了提高可讀性,最好每一個(gè)數(shù)組元素(結(jié)構(gòu)體變量)的初始數(shù)據(jù)都用花括號(hào)括起來(lái)。,13,結(jié)構(gòu)體數(shù)組的初始化,struct student int num; char name20; char sex; int age; float score; char addr30; ; struct student stu30= 2010001,“Li feng”, M,18, 87,“Beijing”, 2010002,“Wang bing”, M,18,79,“Beijing”, 2010030,“Chen ming”, M,17, 80,“Beijing” ;,例中給結(jié)構(gòu)體變量stu0、 stu1、 Stu29的各個(gè)成員賦初值。,例 下述程序的輸出結(jié)果是: main( ) struct copml int x; int y; coum2=1,3,2,7; printf(“%d”,coum0.y/coum0.x*coum1.x); A) 0 B) 1 C) 3 D) 6,答案: D,3,1,2,15,自定義類型,類型定義就是給已經(jīng)存在的數(shù)據(jù)類型重新命名一個(gè)新名字。 例如:數(shù)據(jù)類型float可重新命名為REAL: typedef float REAL; 類型定義的一般形式為

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論