版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
第第頁ch11結(jié)構(gòu)體與共用體llhc語言
第十一章結(jié)構(gòu)體與共用體本章主要內(nèi)容:本章主要內(nèi)容1.結(jié)構(gòu)體定義、運用、初始化結(jié)構(gòu)體定義、結(jié)構(gòu)體定義運用、2.結(jié)構(gòu)體數(shù)組和結(jié)構(gòu)體指針結(jié)構(gòu)體數(shù)組和結(jié)構(gòu)體指針3.單鏈表操作及其應用單鏈表操作及其應用4.共用體、枚舉類型和用共用體、共用體枚舉類型和用typedef定義類型定義類型
c語言
11.1結(jié)構(gòu)體結(jié)構(gòu)體是一種構(gòu)造數(shù)據(jù)類型用途:把不同類型的數(shù)據(jù)組合成一個整體自定義數(shù)據(jù)類型結(jié)構(gòu)體類型定義合法標識符可省:無名結(jié)構(gòu)體成員類型可以是基本型或構(gòu)造型
struct是關鍵字,是關鍵字,不能省略
struct[結(jié)構(gòu)體名結(jié)構(gòu)體名]結(jié)構(gòu)體名{成員名;類型標識符成員名;成員名;類型標識符成員名;…………….};
c語言
num
2字節(jié)字節(jié)
…
例structstudent{intnum;charname[20];charse*;intage;floatscore;charaddr[30];};留意有;號留意有號
namese*agescore
20字節(jié)字節(jié)1字節(jié)字節(jié)2字節(jié)字節(jié)4字節(jié)字節(jié)
…..…..
addr
30字節(jié)字節(jié)
結(jié)構(gòu)體類型定義描述結(jié)構(gòu)結(jié)構(gòu)體類型定義描述結(jié)構(gòu)類型定義的組織形式,不安排內(nèi)存的組織形式不安排內(nèi)存student是類型名不是變量是類型名,不是變量
c語言
11.2結(jié)構(gòu)體變量的定義法1.先定義結(jié)構(gòu)體類型,再定義結(jié)構(gòu)體變量struct結(jié)構(gòu)體名{成員名;類型標識符成員名;成員名;類型標識符成員名;例#define…………….STUDENTstructstudent};;structstudentSTUDENTstruct結(jié)構(gòu)體名變量名表列;變量名表列;
一般形式:
例
{intnum;intnum;charname[20];charname[20];charse*;charse*;intage;intage;floatscore;floatscore;charaddr[30];charaddr[30];};};STUDENTstu1,stu2;structstudentstu1,stu2;{
c語言
法2.定義結(jié)構(gòu)體類型的同時定義結(jié)構(gòu)體變量一般形式:struct結(jié)構(gòu)體名{成員名;類型標識符成員名;成員名;類型標識符成員名;…………….}變量名表列;變量名表列;變量名表列
例structstudent{intnum;charname[20];charse*;intage;floatscore;charaddr[30];}stu1,stu2;
c語言
法3.徑直定義結(jié)構(gòu)體變量一般形式:struct{成員名;類型標識符成員名;成員名;類型標識符成員名;…………….}變量名表列;變量名表列;變量名表列用無名結(jié)構(gòu)體徑直定義變量只能一次
例struct{intnum;charname[20];charse*;intage;floatscore;charaddr[30];}stu1,stu2;
c語言
說明結(jié)構(gòu)體類型與結(jié)構(gòu)體變量概念不同類型:編譯時不安排內(nèi)存;類型編譯時不安排內(nèi)存;編譯時不安排內(nèi)存類型:不能賦值存取、運算;不能賦值、類型不能賦值、存取、運算變量:安排內(nèi)存變量安排內(nèi)存變量:可以變量可以
結(jié)構(gòu)體可嵌套定義結(jié)構(gòu)體成員名與程序中變量名可相同,結(jié)構(gòu)體成員
名與程序中變量名可相同,不會混淆例struct結(jié)構(gòu)體類型及變量的作用域與生存期date{例structstudentintmonth;{intnum;intday;intcharname[20];year;structdate};birthdayintmonth;struct{studentnumnamebirthdayintday;yearnumnamemonthday{intnum;monthdayyearintyear;charname[20];}birthday;structdatebirthday;}stu;}stu;
c語言
11.3結(jié)構(gòu)體變量的引用引用規(guī)章結(jié)構(gòu)體變量不能整體引用,只能引用變量成員
引用方式:結(jié)構(gòu)體變量名.成員名例struct成員(份量)運算符student可以將一個結(jié)構(gòu)體變量賦值給另一個結(jié)構(gòu)體變量可以將一個結(jié)構(gòu)體變量賦值給另一個結(jié)構(gòu)體變量例structstudent{stu1.num=10;intnum;優(yōu)先級:結(jié)構(gòu)體嵌套時逐級引用結(jié)構(gòu)體嵌套時逐級引用1{intnum;例structstudent結(jié)合性:從左向右{charname[20];stu1,stu1.numnum;結(jié)構(gòu)體變量地址與成員地址不同:structname[20];intse*;例結(jié)構(gòu)體變量地址與成員地址不同charstudentcharcharname[20];stu1.score=85.5;student例structintnum;{charse*;intcharse*;age;printf(“%d,%s,%c,%d,%f,%s\n”,stu1);()if(stu1==stu2){intnum;charname[20];stu1.birthday.month=12;intage;floatscore;……..()stu1.score+=stu2.score;charscore;name[20];intage;structdatecharaddr[30];stu1.age++;floatfloatscore;charse*;{intmonth;charaddr[30];stu1={101,“WanLin”,‘M’,19,87.5,“DaLian”};()}stu1,stu2;addr[30];charbirthdayintage;int}stu1,stu2;day;numnamefloatscore;}stu1,stu2;monthdayyearintyear;stu2=stu1;()charaddr[30];}birthday;}stu1,stu2;}stu1,stu2;
c語言
11.4結(jié)構(gòu)體變量的初始化形式一:struct結(jié)構(gòu)體名{成員名;類型標識符成員名;成員名;類型標識符成員名;…………….};;struct結(jié)構(gòu)體名結(jié)構(gòu)體變量初始數(shù)據(jù);結(jié)構(gòu)體變量={初始數(shù)據(jù)初始數(shù)據(jù)};
例structstudent{intnum;charname[20];charse*;intage;charaddr[30];};structstudentstu1={112,“WangLin”,‘M’,19,“200BeijingRoad”};
c語言
形式二:struct結(jié)構(gòu)體名{成員名;類型標識符成員名;成員名;類型標識符成員名;…………….}結(jié)構(gòu)體變量初始數(shù)據(jù)結(jié)構(gòu)體變量={初始數(shù)據(jù)結(jié)構(gòu)體變量初始數(shù)據(jù)};
例structstudent{intnum;charname[20];charse*;intage;charaddr[30];}stu1={112,“WangLin”,‘M’,19,“200BeijingRoad”};
c語言
形式三:struct{成員名;類型標識符成員名;成員名;類型標識符成員名;…………….}結(jié)構(gòu)體變量初始數(shù)據(jù);結(jié)構(gòu)體變量={初始數(shù)據(jù)結(jié)構(gòu)體變量初始數(shù)據(jù)};
例struct{intnum;charname[20];charse*;intage;charaddr[30];}stu1={112,“WangLin”,‘M’,19,“200BeijingRoad”};
c語言
11.5結(jié)構(gòu)體數(shù)組1.結(jié)構(gòu)體數(shù)組的定義三種形式:形式一:形式一:structstudent形式二:形式二:{studentst
ructintnum;形式三:形式三charname[20];{intnum;structcharse*;charname[20];{intnum;intage;charse*;};charname[20];intage;structcharse*;stu[2];student}stu[2];intage;}stu[2];num25Bnamese*agenumnamese*agestu[1]stu[0]
c語言
2.結(jié)構(gòu)體數(shù)組初始化3.結(jié)構(gòu)體數(shù)組引用:點記法引用方式:結(jié)構(gòu)體數(shù)組名[下標下標]引用方式順次初始化:分行初始化:分行初始化:結(jié)構(gòu)體數(shù)組名下標.成員名例structstudentstructstudentstructstudent例structnum;{int{intnum;{{intnum;intnum;charname[20];charname[20];stu[1].age++;charname[20];charname[20];charse*;structstudentcharse*;charse*;charse*;intintage;{intage;num;intage;intcharname[20];age;}stu[]={{……},{……},{……}};};};}stu[]={{……},{……},{……}};charse*;structstudentstu[]={100,“WangLin”,‘M’,20,structstudentstu[]={{100,“WangLin”,‘M’,20},intage;101,“LiGang”,‘M’,19,{101,“Listrcpy(stu[0].name,”ZhaoDa”);Gang”,‘M’,19},}stu[3];110,“LiuYan”,‘F’,19}};{110,“LiuYan”,‘F’,19};全部初始化時維數(shù)可省
c語言
例11.1統(tǒng)計侯選人選票structpersonname{charname[20];Liintcount;Zhang}leader[3]={“Li”,0,“Zhang”,0,”Wang“,0};main()Wang{inti,j;charleader_name[20];for(i=1;i=10;i++){scanf(%s,leader_name);for(j=0;j3;j++)if(strcmp(leader_name,leader[j].name)==0)leader[j].count++;}for(i=0;i3;i++)printf(%5s:%d\n,leader[i].name,leader[i].count);}count000
c語言
11.6結(jié)構(gòu)體和指針1.指向結(jié)構(gòu)體變量的指針main()定義形式:struct結(jié)構(gòu)體名*結(jié)構(gòu)體指針名;{structstudent{longintstudent例structnum;*p;charname[20];運用結(jié)構(gòu)體指針變量引用成員形式structstudent存放結(jié)構(gòu)體變量在內(nèi)存的起始地址pcharse*;num{intnum;(*結(jié)構(gòu)體指針名n;score;結(jié)構(gòu)體指針名成員名結(jié)構(gòu)體指針名).成員名結(jié)構(gòu)體指針名-成員名結(jié)構(gòu)體變量名.成員名結(jié)構(gòu)體指針名成員名結(jié)構(gòu)體變量名成員名structstudentnamestu1;例intfloatcharname[20];stu}stu_1,*p;structstudentse**p=stu1;int*p=n;例p=stu_1;charse*;指向結(jié)構(gòu)體的指針變量*p=10;指向運算符stu1.num=101;age(*p).num=101;n=10intage;stu_1.num=89101;1}stu;優(yōu)先級:strcpy(stu_,LiLin);結(jié)合方向:從左向右structstudent*p=stu;p-se*='M';p-score=89.5;printf(\nNo:%ld\nname:%s\nse*:%c\nscore:%f\n,(*p).num,p-name,stu_1.se*,p-score);}
c語言
2.指向結(jié)構(gòu)體數(shù)組的指針例11.2指向結(jié)構(gòu)體數(shù)組的指針structstudentpnum{intnum;namecharname[20];stu[0]se*charse*;agep+1intage;}stu[3]={{10101,LiLin,'M',18},stu[1]{10102,ZhangFun,'M',19},{10104,WangMin,'F',20}};main()stu[2]{structstudent*p;for(p=stu;pstu+3;p++)printf(%d%s%c%d\n,p-num,p-name,p-se*,p-age);}
c語言
3.用指向結(jié)構(gòu)體的指針作函數(shù)參
數(shù)用結(jié)構(gòu)體變量的成員作參數(shù)值傳遞用結(jié)構(gòu)體變量的成員作參數(shù)值傳遞用結(jié)構(gòu)體變量作參數(shù)多值傳遞多值傳遞,用結(jié)構(gòu)體變量作參數(shù)多值傳遞,效率低用指向結(jié)構(gòu)體變量或數(shù)組的指針作參數(shù)地址傳遞用指向結(jié)構(gòu)體變量或數(shù)組的指針作參數(shù)地址傳遞
4.用結(jié)構(gòu)體數(shù)組作函數(shù)參數(shù)地址傳遞地址傳遞
c語言
用結(jié)構(gòu)體數(shù)組作函數(shù)參數(shù):一個班級學號姓名,成果輸入輸出一個班級學號,姓名成果輸入輸出.例11.3用結(jié)構(gòu)體數(shù)組作函數(shù)參數(shù)一個班級學號姓名成果輸入輸出voiddin(structstuds[],intn){inti;for(i=0;in;i++)scanf(%d%s%f,s[i].no,s[i].name,s[i].score);}改成指針呢?改成指針呢voidprt(structstuds[],intn){structstud*p;inti;for(p=s;ps+n;p++)printf(%d%s%f\n,p-no,p-name,p-score);}
structstud{intno;charname[20];floatscore;};voiddin(structstuds[],intn);voidprt(structstuds[],intn);main(){structstudst1[40],*p;inti;din(st1,40);prt(st1,40);}
c語言
11.7單鏈表1.單鏈表概念
structstud{intno;floatscore;structstud*ne*t;};
head
noscorene*t
noscorene*t
no
...
scoreNU
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年非競爭保密協(xié)議
- 2024年項目合作外協(xié)合同2篇
- 2024年裝飾設計服務合同5篇
- 2024私人合伙健康養(yǎng)老產(chǎn)業(yè)股權(quán)分配與運營管理協(xié)議2篇
- 2024年項目策劃共同開發(fā)合同3篇
- 2024年:跨境電商平臺建設與運營合同
- 2025年度智能交通系統(tǒng)研發(fā)與應用合同6篇
- 2024年游樂場地租賃合同附場地設施租賃及運營協(xié)議
- 2024年物業(yè)監(jiān)管下業(yè)主裝修合作合同版
- 教師業(yè)務檔案管理辦法
- 【APP違規(guī)收集個人信息的法律問題分析9800字(論文)】
- 商品房預售合同簽約證明和預告登記申請書
- 質(zhì)量管理體系成熟度評估表
- 國際疾病分類腫瘤學專輯第3版應用課件
- 單體調(diào)試及試運方案
- 2023-2024學年浙江省杭州市城區(qū)數(shù)學四年級第一學期期末學業(yè)水平測試試題含答案
- 五星級酒店市場調(diào)研報告
- 車輛剮蹭私下解決協(xié)議書(3篇)
- 網(wǎng)球技術與戰(zhàn)術-華東師范大學中國大學mooc課后章節(jié)答案期末考試題庫2023年
- 2022-2023學年衡水市深州市小升初數(shù)學高頻考點檢測卷含答案
- 現(xiàn)代科學技術概論知到章節(jié)答案智慧樹2023年成都師范學院
評論
0/150
提交評論