![第10章_結(jié)構(gòu)體new_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/10/1b057e2e-3ccf-49b7-a5d6-2ae205c833d3/1b057e2e-3ccf-49b7-a5d6-2ae205c833d31.gif)
![第10章_結(jié)構(gòu)體new_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/10/1b057e2e-3ccf-49b7-a5d6-2ae205c833d3/1b057e2e-3ccf-49b7-a5d6-2ae205c833d32.gif)
![第10章_結(jié)構(gòu)體new_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/10/1b057e2e-3ccf-49b7-a5d6-2ae205c833d3/1b057e2e-3ccf-49b7-a5d6-2ae205c833d33.gif)
![第10章_結(jié)構(gòu)體new_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/10/1b057e2e-3ccf-49b7-a5d6-2ae205c833d3/1b057e2e-3ccf-49b7-a5d6-2ae205c833d34.gif)
![第10章_結(jié)構(gòu)體new_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/10/1b057e2e-3ccf-49b7-a5d6-2ae205c833d3/1b057e2e-3ccf-49b7-a5d6-2ae205c833d35.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第10章 結(jié)構(gòu)體本章內(nèi)容結(jié)構(gòu)體類型的定義結(jié)構(gòu)體變量的定義結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體與指針鏈表的概念及操作2引例輸入10位同學(xué)的一組信息,包括學(xué)號(hào)、姓名、性別、數(shù)學(xué)成績(jī)、計(jì)算機(jī)成績(jī),求得每位同學(xué)的平均分和總分,然后按照總分從高到低排序。3結(jié)構(gòu)體類型與變量的概念 結(jié)構(gòu)體類型把關(guān)系緊密且邏輯相關(guān)的多種不同類型的數(shù)據(jù)組織到統(tǒng)一的名字之下,這樣的集合稱為結(jié)構(gòu)體類型。結(jié)構(gòu)體變量結(jié)構(gòu)體類型的變量占用相鄰的一段內(nèi)存單元45一般形式:一般形式:struct 結(jié)構(gòu)體類型名結(jié)構(gòu)體類型名 類型關(guān)鍵字類型關(guān)鍵字 成員名成員名1 1; 類型關(guān)鍵字類型關(guān)鍵字 成員名成員名2 2; . 類型關(guān)鍵字類型關(guān)鍵字 成員名成員名n n; ;,
2、元素元素域域6_先定義結(jié)構(gòu)體類型再定義變量名先定義結(jié)構(gòu)體類型再定義變量名_在定義類型的同時(shí)定義變量在定義類型的同時(shí)定義變量_直接定義結(jié)構(gòu)體變量(不出現(xiàn)結(jié)構(gòu)體類型名)直接定義結(jié)構(gòu)體變量(不出現(xiàn)結(jié)構(gòu)體類型名)struct student student1,student2;student 用戶自定義類型名關(guān)鍵字關(guān)鍵字typedef 概念:關(guān)鍵字typedef用來(lái)為已經(jīng)定義的數(shù)據(jù)類型定義一個(gè)別名。舉例: typedef struct student STUD; STUD student1,student2; STUD與 struct student類型是同義詞7結(jié)構(gòu)體變量的內(nèi)存占用按照域表中域的先后
3、順序依次在內(nèi)存中劃分存儲(chǔ)單元給每個(gè)域。直接用結(jié)構(gòu)體的每個(gè)成員類型所占內(nèi)存字節(jié)數(shù)的和作為一個(gè)結(jié)構(gòu)體實(shí)際所占的內(nèi)存字節(jié)數(shù)是不正確的。事實(shí)事實(shí)上,所有數(shù)據(jù)類型在內(nèi)存中都是從偶數(shù)地址開始存放的,且結(jié)構(gòu)上,所有數(shù)據(jù)類型在內(nèi)存中都是從偶數(shù)地址開始存放的,且結(jié)構(gòu)所占的實(shí)際空間一般是按照機(jī)器字長(zhǎng)對(duì)齊的所占的實(shí)際空間一般是按照機(jī)器字長(zhǎng)對(duì)齊的 .不同的編譯器、平臺(tái),對(duì)齊方式會(huì)有變化不同的編譯器、平臺(tái),對(duì)齊方式會(huì)有變化我們用sizeof函數(shù)獲得結(jié)構(gòu)體變量所占的字節(jié)數(shù)。 即用即用 sizeof(struct student) 進(jìn)行計(jì)算進(jìn)行計(jì)算8結(jié)構(gòu)體變量的引用結(jié)構(gòu)體變量的引用 一般形式:一般形式: 結(jié)構(gòu)體變量名結(jié)構(gòu)體
4、變量名 . 成成員名員名 結(jié)構(gòu)體變量的初始化結(jié)構(gòu)體變量的初始化 舉例:舉例:struct student st1= 101,zhangsan,M,85,69; struct student int num; char name20; char sex; float shx; float jsj; float aver; float sum;9舉例:以下結(jié)構(gòu)體變量的引用哪個(gè)是正確的?struct s int x; int y; vs ;A) s . x = 10 ; B) s . vs . x = 10;C) struct va; D) struct s va = 10; va . x = 10
5、;10結(jié)構(gòu)體變量的輸入與輸出結(jié)構(gòu)體變量的輸入與輸出C語(yǔ)言規(guī)定,不能將一個(gè)結(jié)構(gòu)體變量作為一語(yǔ)言規(guī)定,不能將一個(gè)結(jié)構(gòu)體變量作為一個(gè)整體實(shí)施輸入、輸出的操作,只能對(duì)每個(gè)整體實(shí)施輸入、輸出的操作,只能對(duì)每個(gè)具體的成員進(jìn)行輸入、輸出操作。個(gè)具體的成員進(jìn)行輸入、輸出操作。舉例:struct student st1= 101,zhangsan,M,85,69;11結(jié)構(gòu)體類型的嵌套結(jié)構(gòu)體類型的嵌套如: struct date int month; int day; int year; ;struct stud char name20; int num; char sex; struct date birthd
6、ay; float shx; float jsj; float aver; float sum;12結(jié)構(gòu)體類型中的成員也可以是結(jié)構(gòu)體。結(jié)構(gòu)體類型中的成員也可以是結(jié)構(gòu)體。舉例struct workersint no; char name20; char sex; struct int day; int month; int year; birth; w;若w中的生日為1963年10月25日,如何編寫相應(yīng)的語(yǔ)句?13w.birth.day=25;w.birth.month=10;w.birth.year=1963;結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組概念:由若干相同結(jié)構(gòu)體類型的數(shù)據(jù)組成的概念:由若干相同結(jié)構(gòu)體類型
7、的數(shù)據(jù)組成的有序集合,叫做結(jié)構(gòu)體數(shù)組。有序集合,叫做結(jié)構(gòu)體數(shù)組。定義形式:同基本數(shù)據(jù)類型的數(shù)組定義方法定義形式:同基本數(shù)據(jù)類型的數(shù)組定義方法 struct 結(jié)構(gòu)體類型名結(jié)構(gòu)體類型名 結(jié)構(gòu)體數(shù)組名結(jié)構(gòu)體數(shù)組名元素元素個(gè)數(shù)個(gè)數(shù);14舉例struct person char name9; int age; ;struct person class10= John,19,Paul,17,Mary,18,Adam,16;能打印出字母A的語(yǔ)句應(yīng)為:15Printf(“%c”,0);舉例引例:引例:輸入輸入10位同學(xué)的一組信息,包位同學(xué)的一組信息,包括學(xué)號(hào)、姓名、數(shù)學(xué)成績(jī)、計(jì)括學(xué)號(hào)、姓
8、名、數(shù)學(xué)成績(jī)、計(jì)算機(jī)成績(jī),求得每位同學(xué)的平算機(jī)成績(jī),求得每位同學(xué)的平均分和總分,然后按照總分從均分和總分,然后按照總分從高到低排序。高到低排序。 zhang, 001, 95.0, 64.0 wang, 002, 92.0, 97.0 zhao, 003, 85.0, 78.0 li, 004, 96.0, 88.0 zhou, 005, 91.0, 96.0 wu, 006, 93.0, 78.0 lin, 007, 98.0, 97.0 ma, 008, 89.0, 93.0 zhen, 009, 88.0, 90.0 yu, 010, 94.0, 90.016#include void
9、main()struct student char name10; int num; float shx; float jsj; float aver; float sum;stu4=zhang,001,95.0,64.0,wang,002,92.0,97.0,zhao,003,85.0,78.0,li,004,96.0,88.0,student1;int i,j;for(i=0;i4;i+) stui.sum=stui.shx+stui.jsj; stui.aver=stui.sum/2;17for(i=0;i3;i+) for(j=i+1;j4;j+) if(stui.sumstuj.su
10、m) student1=stui; stui=stuj; stuj=student1; printf(sort afer:n); for(i=0;ix = 0; /*指向運(yùn)算符指向運(yùn)算符*/第二種更常用第二種更常用20 xypptpt思考題struct pointint x;int y;struct rectstruct point pt1;struct point pt2;struct rect rt;struct rect *rp = &rt;下面表達(dá)式哪些合法?下面表達(dá)式哪些合法?rt.pt1.x(*rp).pt1.xrp-pt1.xrt-pt1.x上面合法的表達(dá)式都是等價(jià)上面合
11、法的表達(dá)式都是等價(jià)的嗎?的嗎?21結(jié)構(gòu)體數(shù)組的指針結(jié)構(gòu)體數(shù)組的指針struct STUDENT stu4;struct STUDENT *pt;pt = stu;222341stu0stu1stu2ptpt+stu3舉例#include stdio.hstruct st int x; int y; ;void main()struct st s2=24,8,4,2, *p=s; printf(%d,+p-x); /* (+p) -x */23輸出結(jié)果為:25(4)下面程序的運(yùn)行結(jié)果是下面程序的運(yùn)行結(jié)果是_. main() struct cmplx int x; int y; cnum2=1,3
12、,2,7; printf(%dn,cnum0.y/cnum0.x*cnum1.x); a)0 b)1 c)3 d)624#include stdio.hstruct stint x; int *y;void main( )int dt4=10,20,30,40; struct st a4=50,&dt0,60,&dt1,70,&dt2,80,&dt3; struct st *p=a; printf(%dn,+p-x ); printf(%dn,(+p)-x ); printf(%dn,+(*p-y) );25輸出結(jié)果是:516021struct類型的特點(diǎn)類型的特
13、點(diǎn)一個(gè)普通的類型一個(gè)普通的類型可以定義該類型的變量、數(shù)組、指針可以定義該類型的變量、數(shù)組、指針可以做函數(shù)的參數(shù)類型和返回值類型可以做函數(shù)的參數(shù)類型和返回值類型它的成員可以是任意類型它的成員可以是任意類型基本類型、數(shù)組、指針、結(jié)構(gòu)體基本類型、數(shù)組、指針、結(jié)構(gòu)體struct類型的變量類型的變量?jī)蓚€(gè)同類型結(jié)構(gòu)體變量之間可以相互賦值兩個(gè)同類型結(jié)構(gòu)體變量之間可以相互賦值可以取地址可以取地址&不能直接參與算術(shù)和比較運(yùn)算不能直接參與算術(shù)和比較運(yùn)算26動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu) 鏈表鏈表結(jié)構(gòu)體類型聲明時(shí)不能包含自我,但可以包結(jié)構(gòu)體類型聲明時(shí)不能包含自我,但可以包含指向本結(jié)構(gòu)體類型的指針變量含指向本結(jié)構(gòu)體
14、類型的指針變量鏈表鏈表struct Link int data; struct Link *next;27datanextheaddatanextdatanextdataNULL圖10-1 鏈表原理圖基本概念基本概念鏈表鏈表-是一種常見的重要的數(shù)據(jù)結(jié)構(gòu)。它是是一種常見的重要的數(shù)據(jù)結(jié)構(gòu)。它是動(dòng)態(tài)進(jìn)行存儲(chǔ)分配的一種結(jié)構(gòu)。它可以根據(jù)動(dòng)態(tài)進(jìn)行存儲(chǔ)分配的一種結(jié)構(gòu)。它可以根據(jù)需要開辟或刪除存儲(chǔ)單元。需要開辟或刪除存儲(chǔ)單元。 鏈表分為鏈表分為單向鏈表單向鏈表和雙向鏈表。和雙向鏈表。 頭指針頭指針-鏈表有一個(gè)鏈表有一個(gè)頭指針頭指針變量,通常以變量,通常以head表示,它存放鏈表中的第表示,它存放鏈表中的第1個(gè)
15、元素的地個(gè)元素的地 址。址。28datanextheaddatanextdatanextdataNULL圖10-1 鏈表原理圖基本概念基本概念 節(jié)點(diǎn)節(jié)點(diǎn)-鏈表中的元素稱為節(jié)點(diǎn)。鏈表中的元素稱為節(jié)點(diǎn)。 每個(gè)節(jié)點(diǎn)都包含兩部分:數(shù)據(jù)域和指針域。每個(gè)節(jié)點(diǎn)都包含兩部分:數(shù)據(jù)域和指針域。 根據(jù)節(jié)點(diǎn)在鏈表中的位置,又可分為鏈表的起始節(jié)根據(jù)節(jié)點(diǎn)在鏈表中的位置,又可分為鏈表的起始節(jié)點(diǎn)、中間節(jié)點(diǎn)以及結(jié)束節(jié)點(diǎn)。點(diǎn)、中間節(jié)點(diǎn)以及結(jié)束節(jié)點(diǎn)。鏈表的結(jié)束節(jié)點(diǎn)的指針域?yàn)榭罩羔樻湵淼慕Y(jié)束節(jié)點(diǎn)的指針域?yàn)榭罩羔楴ULL 29datanextheaddatanextdatanextdataNULL圖10-1 鏈表原理圖舉例#incl
16、ude stdio.hstruct stint x; struct st *next;void main( )struct st aa3=5,&aa1,7,&aa2,9,NULL; struct st *p; p=&aa0; printf(%d,+p-x );30兩個(gè)常用函數(shù)malloc( ) 函數(shù)動(dòng)態(tài)申請(qǐng)內(nèi)存如:struct temp int data; struct temp *next; ; struct temp *p; p=(struct temp *)malloc(sizeof(struct temp);free( )函數(shù)釋放內(nèi)存如: free(p);使用這
17、兩個(gè)函數(shù)時(shí)要包含頭文件 stdlib.h31單鏈表的基本操作鏈表的建立鏈表的刪除鏈表的插入3233共用體共用體 聯(lián)合體又稱為共用體,意為各種不同數(shù)據(jù)共用同一聯(lián)合體又稱為共用體,意為各種不同數(shù)據(jù)共用同一段存儲(chǔ)空間。段存儲(chǔ)空間。 與結(jié)構(gòu)體類似,為了定義共用體類型變量,首先要與結(jié)構(gòu)體類似,為了定義共用體類型變量,首先要定義共用體類型,說明該共用體類型中包括哪些成員,定義共用體類型,說明該共用體類型中包括哪些成員,它們各屬于何數(shù)據(jù)類型,然后再定義該類型的變量。它們各屬于何數(shù)據(jù)類型,然后再定義該類型的變量。34 定義共用體數(shù)據(jù)類型的一般形式為定義共用體數(shù)據(jù)類型的一般形式為union 共用體名共用體名 成
18、員表成員表 ;例如,例如,union w int k; double d; char c; ;定義了一個(gè)共用體類型定義了一個(gè)共用體類型w,包括代表整型量的成員,包括代表整型量的成員k、代表、代表雙精度型量的成員雙精度型量的成員d和代表字符型量的成員和代表字符型量的成員c。 k,d,c三個(gè)變?nèi)齻€(gè)變量的首地址相同,相當(dāng)于共用了一段連續(xù)的內(nèi)存單元,長(zhǎng)量的首地址相同,相當(dāng)于共用了一段連續(xù)的內(nèi)存單元,長(zhǎng)度為度為8.kdc2000共用體變量的引用與賦值共用體變量的引用與賦值引用的一般形式:引用的一般形式: 共用體變量名共用體變量名.成員名成員名賦值:賦值: 僅在程序中進(jìn)行,不能初始化,每次只能賦予僅在程序
19、中進(jìn)行,不能初始化,每次只能賦予一個(gè)成員值。一個(gè)成員值。3536幾點(diǎn)說明:幾點(diǎn)說明: (1)由于一個(gè)共用體變量中的各成員共用一段存儲(chǔ)空)由于一個(gè)共用體變量中的各成員共用一段存儲(chǔ)空間,因此,在任一時(shí)刻,只能有一種類型的數(shù)據(jù)存放在該間,因此,在任一時(shí)刻,只能有一種類型的數(shù)據(jù)存放在該變量中,即在任一時(shí)刻,只有一個(gè)成員的數(shù)據(jù)有意義,其變量中,即在任一時(shí)刻,只有一個(gè)成員的數(shù)據(jù)有意義,其他成員的數(shù)據(jù)是沒有意義的。他成員的數(shù)據(jù)是沒有意義的。 (2)在引用共用體變量中的成員時(shí),必須保證數(shù)據(jù)的)在引用共用體變量中的成員時(shí),必須保證數(shù)據(jù)的一致。一致。 (3)在定義共用體變量時(shí)不能為其初始化,并且,共)在定義共用體變量時(shí)不能為其初始化,并且,共用體變量不能作為函數(shù)參數(shù)。用體變量不能作為函數(shù)參數(shù)。 (4)共用體類型與結(jié)構(gòu)體類型可以互相嵌套,即共用)共用體類型與結(jié)構(gòu)體類型可以互相嵌套,即共用體類型可以作為結(jié)構(gòu)體類型的成員,結(jié)構(gòu)體類型也可以作體類型可以作為結(jié)構(gòu)體類型的成員,結(jié)構(gòu)體類型也可以作為共用體類型的成員。為共用體類型的成員。37枚舉類型枚舉類型枚舉類型枚舉類型 (1)先定義枚舉類型,然后定義該枚舉)先定義枚舉類型,然后定義該枚舉類型的變量
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司在職員工培訓(xùn)服務(wù)合同書
- 礦山企業(yè)安全生產(chǎn)許可證頒發(fā)與管理作業(yè)指導(dǎo)書
- 反擔(dān)保合同協(xié)議1
- 游戲美術(shù)設(shè)計(jì)制作實(shí)戰(zhàn)手冊(cè)作業(yè)指導(dǎo)書
- 針紡織品銷售購(gòu)銷合同
- 小學(xué)二年級(jí)數(shù)學(xué)上冊(cè)口算
- 2025年紹興a2貨運(yùn)從業(yè)資格證模擬考試題
- 2024-2025學(xué)年高中語(yǔ)文專題一小說家想說些什么第1課在酒樓上學(xué)案蘇教版選修短篇小說蚜
- 七年級(jí)班級(jí)工作總結(jié)
- 四年級(jí)第一學(xué)期德育工作計(jì)劃
- 普外腹腔鏡手術(shù)護(hù)理常規(guī)
- 2024年全國(guó)職業(yè)院校技能大賽(礦井災(zāi)害應(yīng)急救援賽項(xiàng))考試題庫(kù)(含答案)
- 《預(yù)制高強(qiáng)混凝土風(fēng)電塔筒生產(chǎn)技術(shù)規(guī)程》文本附編制說明
- C語(yǔ)言程序設(shè)計(jì) 教案
- 2025新譯林版英語(yǔ)七年級(jí)下單詞表
- 海洋工程設(shè)備保溫保冷方案
- 主干光纜、支線光纜線路中斷應(yīng)急預(yù)案
- 跨學(xué)科主題學(xué)習(xí)的思考與策略
- 文藝演出排練指導(dǎo)服務(wù)合同
- 醫(yī)院消防安全培訓(xùn)課件(完美版)
- 行政法-9行政確認(rèn)
評(píng)論
0/150
提交評(píng)論