版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第第頁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.單鏈表操作及其應(yīng)用單鏈表操作及其應(yīng)用4.共用體、枚舉類型和用共用體、共用體枚舉類型和用typedef定義類型定義類型
c語言
11.1結(jié)構(gòu)體結(jié)構(gòu)體是一種構(gòu)造數(shù)據(jù)類型用途:把不同類型的數(shù)據(jù)組合成一個整體自定義數(shù)據(jù)類型結(jié)構(gòu)體類型定義合法標(biāo)識符可省:無名結(jié)構(gòu)體成員類型可以是基本型或構(gòu)造型
struct是關(guān)鍵字,是關(guān)鍵字,不能省略
struct[結(jié)構(gòu)體名結(jié)構(gòu)體名]結(jié)構(gòu)體名{成員名;類型標(biāo)識符成員名;成員名;類型標(biāo)識符成員名;…………….};
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)體名{成員名;類型標(biāo)識符成員名;成員名;類型標(biāo)識符成員名;例#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)體名{成員名;類型標(biāo)識符成員名;成員名;類型標(biāo)識符成員名;…………….}變量名表列;變量名表列;變量名表列
例structstudent{intnum;charname[20];charse*;intage;floatscore;charaddr[30];}stu1,stu2;
c語言
法3.徑直定義結(jié)構(gòu)體變量一般形式:struct{成員名;類型標(biāo)識符成員名;成員名;類型標(biāo)識符成員名;…………….}變量名表列;變量名表列;變量名表列用無名結(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)體名{成員名;類型標(biāo)識符成員名;成員名;類型標(biāo)識符成員名;…………….};;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)體名{成員名;類型標(biāo)識符成員名;成員名;類型標(biāo)識符成員名;…………….}結(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{成員名;類型標(biāo)識符成員名;成員名;類型標(biāo)識符成員名;…………….}結(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ù)組名[下標(biāo)下標(biāo)]引用方式順次初始化:分行初始化:分行初始化:結(jié)構(gòu)體數(shù)組名下標(biāo).成員名例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ù):一個班級學(xué)號姓名,成果輸入輸出一個班級學(xué)號,姓名成果輸入輸出.例11.3用結(jié)構(gòu)體數(shù)組作函數(shù)參數(shù)一個班級學(xué)號姓名成果輸入輸出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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度房產(chǎn)繼承公積金貸款買賣合同4篇
- 2025年校長聘任合同:聚焦核心素養(yǎng)培養(yǎng)合作框架3篇
- 2025-2030年中國麥芽糊精行業(yè)發(fā)展現(xiàn)狀及前景趨勢分析報告
- 2025-2030年中國酸奶發(fā)酵劑行業(yè)市場前景趨勢與投資潛力分析報告
- 2025年度煤炭鐵路運輸供應(yīng)鏈金融服務(wù)合同3篇
- 2025年相鄰?fù)恋赝恋亓鬓D(zhuǎn)稅收優(yōu)惠政策協(xié)議3篇
- 2025-2030年中國觸摸屏玻璃基板行業(yè)市場運行狀況及發(fā)展趨勢預(yù)測報告
- 2025-2030年中國螺絲刀行業(yè)市場發(fā)展現(xiàn)狀及前景規(guī)劃研究報告
- 二零二五年度戶外廣告位臨時租賃合同示范文本4篇
- 工程管理重大風(fēng)險應(yīng)對方案
- 直播帶貨助農(nóng)現(xiàn)狀及發(fā)展對策研究-以抖音直播為例(開題)
- 腰椎間盤突出疑難病例討論
- 《光伏發(fā)電工程工程量清單計價規(guī)范》
- 2023-2024學(xué)年度人教版四年級語文上冊寒假作業(yè)
- (完整版)保證藥品信息來源合法、真實、安全的管理措施、情況說明及相關(guān)證明
- 營銷專員績效考核指標(biāo)
- 陜西麟游風(fēng)電吊裝方案專家論證版
- 供應(yīng)商審核培訓(xùn)教程
- 【盒馬鮮生生鮮類產(chǎn)品配送服務(wù)問題及優(yōu)化建議分析10000字(論文)】
- 肝硬化心衰患者的護(hù)理查房課件
評論
0/150
提交評論