




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第8章結構體信息工程學院主講人:XXX內容提要41結構體類型的定義12構體類型的定義423結構體數(shù)組424252448.1結構體類型的定義結構體是一種比較復雜但卻非常靈活的構造數(shù)據(jù)類型。允許用戶自已指定若干個成員,這種成員可以是不同的數(shù)據(jù)類型。我們把數(shù)據(jù)類型不同,且有一定聯(lián)系的多個數(shù)據(jù)用一定的語法組織起來,以struct為關鍵字,為其取一個名字,構造出一種新的數(shù)據(jù)類型,被稱為結構體類型。結構體類型定義形式:struct結構體類型名{類型說明符1成員1;類型說明符2成員2;.....類型說明符n成員n;};8.1結構體類型的定義例如:structstudent{intnum;charname[15]charsex;intage;floatscore;charaddr[30];};說明如下:(1)struct為類型說明的關鍵字,是結構體類型定義的標識符。(2)結構體類型名由用戶定義,它與struct一起形成特定的結構體類型,在以后的結構體變量定義中可以被使用。(3)花括號內是該結構體各個成員,由它們共同組成結構體。(4)注意:不要忽略整個結構體類型定義結束的分員,花括號后面的分號不能省略。(5)結構體中的成員本身也可以是結構體,這稱為結構體的嵌套。而且內嵌結構體成員的名字可以和外層成員名字相同。8.1結構體類型的定義【例8.1】結構體類型的嵌套。程序如下:structbirthday{ intyear; intmonth; intday;};structstudent{ charname[15]; structbirthdaydate; charsex; floatscore; charaddr[30];};;}結構體類型的嵌套本例中,structstudent結構體中又嵌套了stuctbirthday結構體,如圖8-1所示:8.2結構體變量8.2.1結構體變量的定義定義結構體變量有以三種方法。1.先定義結構體類型,再定義結構體變量一般形式為:struct結構體類型名{類型說明符成員名;};struct結構體類型名結構體變量名表列;8.2結構體變量8.2.1結構體變量的定義定義結構體變量有以三種方法。1.先定義結構體類型,再定義結構體變量一般形式為:struct結構體類型名{類型說明符成員名;};struct結構體類型名結構體變量名表列;8.2結構體變量8.2.1結構體變量的定義2.在定義結構體類型的同時定義結構體變量一般形式為:struct結構體類型名{類型說明符成員名;}結構體變量名表列;例如:structstudent{intnum;charname[15]charsex;intage;floatscore;charaddr[30];}student1,student2;它的效果與第一種方法相同,形式比較緊湊,即同時定義了兩個structstudent類型的變量student1和student2。8.2結構體變量8.2.1結構體變量的定義3.無名定義,缺省了結構體類型名,直接定義結構體類型變量一般形式為:struct{類型說明符成員名;}結構體變量名表列;例如:struct{intnum;charname[15]charsex;intage;floatscore;charaddr[30];}student1,student2;8.2結構體變量8.2.2結構體變量的引用結構體變量在定義之后,可以引用這個結構體變量,但應遵循以下規(guī)則:(1)一個結構體變量不能作為一個整體進行輸入輸出。例如,已定義student1和student2為結構體變量,它們已有值。不能這樣引用:printf(“%d,%s,%c,%d,%f,%s\n”,student1);結構體變量中的各個成員只能分別進行輸入和輸出。引用結構體變量中成員的方法為:結構體變量名.成員名8.2結構體變量8.2.2結構體變量的引用結構體變量在定義之后,可以引用這個結構體變量,但應遵循以下規(guī)則:(2)如果成員本身又屬于一個結構體類型,則需要用到多個成員運算符,一級一級地找到最低一級的成員。只能對某一級的成員進行賦值或存取以及運算。例如,對上面定義的嵌套結構體變量student1,可以這樣訪問成員:student1.numstudent1.birthday.month(3)結構體變量的成員可以進行各種運算(像普通變量一樣)。例如:student2.score=student1.score;sum=student1.score+student2.score;//sum是定義過的非結構體變量student1.age++;++student1.age;由于“.”運算符的優(yōu)先級最高,因此student1.age++是對student1.age進行自加運算,而不是先對age進行自加運算。8.2結構體變量8.2.2結構體變量的引用結構體變量在定義之后,可以引用這個結構體變量,但應遵循以下規(guī)則:(4)可以引用結構體變量的地址,也可以引用結構體成員的地址。例如:scanf(“%d”,&student1.num);(輸入student1.num的值)printf(“%o”,&student1);(輸出student1的首地址)但不能用以下語句整體讀入結構體變量,例如:scanf(“%d,%s,%c,%d,%f,%s”,&student1);結構體變量的地址主要用作函數(shù)參數(shù),傳遞結構體變量的地址。8.2結構體變量#include<stdio.h>voidmain(){structstudent{longintnum;charname[20]; charsex; charaddr[20];}a={100101,“LiLin”,‘M’,“123BeiJingRoad”};//對結構體變量a賦值printf(“NO.:%ld\nname:%s\nsex:%c\naddress:%s\n”,a.num,,a.sex,a.addr);}運行結果:8.2.3結構體變量的初始化無參函數(shù)舉例8.3結構體數(shù)組8.3.1定義結構體數(shù)組定義結構體數(shù)組和定義結構體變量的方法相仿,只要說明其為數(shù)組就可以了。例如:structstudent{intnum;charname[15]charsex;intage;floatscore;charaddr[30];};structstudentstu[4];以上定義了一個數(shù)組stu,數(shù)組有4個元素,均為structstudent類型變量。8.3結構體數(shù)組8.3.2結構體數(shù)組初始化同其它類型的數(shù)組一樣,結構體數(shù)組也可以初始化。例如:structstudent{intnum;charname[15]charsex;intage;floatscore;charaddr[30];}stu[4]={{100101,“LiLin”,‘M’,19,86.5,“123BeiJingRoad”},{100102,“ZhangFun”,‘M’,20,88,“130ShangHaiRoad”},{100103,“WangMing”,‘M’,18,86.5,“102GuangZhouRoad”},{100104,“ZhangGang”,‘F’,21,95,“113GuangZhouRoad”}};8.3結構體數(shù)組【例8.3】統(tǒng)計候選人得票的統(tǒng)計程序。設有3個候選人,每次輸入一個得票的候選人的名字,要求最后輸出每各人得票結果。程序如下:#include<stdio.h>#include<string.h>structperson{charname[20];intcount;}leader[3]={{"Li",0},{"Zhang",0},{"Fun",0}};voidmain(){inti,j;charleader_name[20];for(i=1;i<=10;i++){scanf("%s",leader_name);for(j=0;j<3;j++)if(strcmp(leader_name,leader[j].name)==0)leader[j].count++;}printf("\n");for(i=0;i<3;i++)printf("%5s:%d\n",leader[i].name,leader[i].count);}運行結果:8.3.2結構體數(shù)組應用舉例本章小結本章主
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高中化學新教材同步 必修第一冊 第3章 第2節(jié) 實驗活動2 鐵及其化合物的性質
- 【四川卷】四川省德陽市高中2022級(2025屆)高三質量監(jiān)測考試(二)(德陽二診)(2.21-2.23)英語試卷答案
- 傾廢航行數(shù)據(jù)記錄儀戰(zhàn)略市場規(guī)劃報告
- 鎳精礦戰(zhàn)略市場規(guī)劃報告
- 信鴿教練合同范本
- 加盟 轉讓合同范本
- 值守合同范本
- 中國學生發(fā)展核心素養(yǎng)心得體會
- 臺車出售合同范本
- 水利工程師水力學試題(附參考答案)
- GB/T 23859-2009勞動定額測時方法
- FZ/T 07019-2021針織印染面料單位產(chǎn)品能源消耗限額
- 人教版PEP初中英語中考總復習:復習重點課件
- 數(shù)字化消防管理解決方案
- 二類汽修廠汽車維修管理新規(guī)制度匯編
- 人教PEP版英語五年級下冊第四單元全部課件
- 硬筆書法 社團教案
- 中國膿毒癥及膿毒性休克急診治療指南
- 工序標準工時及產(chǎn)能計算表
- 人教版體育與健康四年級-《障礙跑》教學設計
- DB32-T 2860-2015散裝液體化學品槽車裝卸安全作業(yè)規(guī)范-(高清現(xiàn)行)
評論
0/150
提交評論