![第8章 根據(jù)需要創(chuàng)建數(shù)據(jù)類型_第1頁](http://file4.renrendoc.com/view9/M00/31/03/wKhkGWdWXcSAFLQCAAEE5ncK30U618.jpg)
![第8章 根據(jù)需要創(chuàng)建數(shù)據(jù)類型_第2頁](http://file4.renrendoc.com/view9/M00/31/03/wKhkGWdWXcSAFLQCAAEE5ncK30U6182.jpg)
![第8章 根據(jù)需要創(chuàng)建數(shù)據(jù)類型_第3頁](http://file4.renrendoc.com/view9/M00/31/03/wKhkGWdWXcSAFLQCAAEE5ncK30U6183.jpg)
![第8章 根據(jù)需要創(chuàng)建數(shù)據(jù)類型_第4頁](http://file4.renrendoc.com/view9/M00/31/03/wKhkGWdWXcSAFLQCAAEE5ncK30U6184.jpg)
![第8章 根據(jù)需要創(chuàng)建數(shù)據(jù)類型_第5頁](http://file4.renrendoc.com/view9/M00/31/03/wKhkGWdWXcSAFLQCAAEE5ncK30U6185.jpg)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
11龐立華2016年9月高級語言(yǔyán)程序設計(C語言)1共二十五頁第8章根據(jù)(gēnjù)需要創(chuàng)建數(shù)據(jù)類型8.1定義和引用結構(jiégòu)體變量8.2使用結構體數(shù)組8.3結構體指針8.4用指針處理鏈表8.5使用枚舉類型2共二十五頁重點(zhòngdiǎn)
Focus結構(jiégòu)體第8章根據(jù)需要創(chuàng)建數(shù)據(jù)類型3共二十五頁難點(nádiǎn)
Difficulties
8.2使用(shǐyòng)結構體數(shù)組8.3結構體指針第8章根據(jù)需要創(chuàng)建數(shù)據(jù)類型4共二十五頁有時需要將不同類型的數(shù)據(jù)組合成一個有機的整體如:一個學生的信息:學號(num),姓名(name),性別(sex),年齡(age),成績(score),家庭地址(addr)等結構體:若干個數(shù)據(jù)類型不同(也可相同(xiānɡtónɡ))的數(shù)據(jù)項的組合結構體是一種數(shù)據(jù)結構,需要用戶根據(jù)自己的需要,按照某種規(guī)則創(chuàng)建,即創(chuàng)建結構體類型numnamestudent_1addrscoreagesex0502LiYanM1891Zhejiang8.1定義和引用(yǐnyòng)結構體變量5共二十五頁8.1.1
創(chuàng)建(chuàngjiàn)結構體類型的一般形式:struct
結構體名{成員列表};struct是關鍵字,表示(biǎoshì)是結構體類型student
是結構體名structstudent是結構體類型名結構體中的各成員形式:類型符成員名;8.1定義和引用結構體變量struct
student{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};student并非變量名成員也可以是結構體類型類似int6共二十五頁8.1.2怎樣定義結構體類型變量(1)先聲明結構體類型再定義變量名將一個變量定義為結構體類型:不僅要求指定(zhǐdìng)變量為結構體類型而且要求指定為某一特定的結構體類型。一般形式:struct結構(jiégòu)體名{成員表列};struct結構體名變量名表列;8.1定義和引用結構體變量structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};structstudentstudent1,student2;7共二十五頁(2)在定義(dìngyì)結構體類型的同時定義變量一般形式:struct結構(jiégòu)體類型名{成員表列}
變量名表列;8.1定義和引用結構體變量structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}student1,student2;8共二十五頁(3)直接(zhíjiē)定義結構體類型的變量一般(yībān)形式:struct{成員表列}
變量名表列;8.1定義和引用結構體變量struct{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}student1,student2;9共二十五頁說明:1、類型與變量的區(qū)別(qūbié):定義時先定義結構體類型,然后定義變量。類型不分配空間,變量分配空間。2、結構體可以嵌套定義:結構體成員也可以是結構體變量。3、成員名可以與變量名相同structdate{intmonth;intday;intyear;};structdate
data1;structstudent{intnum;charname[20];charsex;intage;structdatebirthday;charaddr[30];}student1;8.1定義和引用結構(jiégòu)體變量10共二十五頁8.1.3引用結構體變量
結構體變量名.成員名規(guī)則:1、不能將結構體變量作為一個整體(zhěngtǐ)進行賦值、輸出,只能對結構體中各個成員分別進行;但允許將一個結構體變量直接賦值給另一個具有相同結構的結構體變量;2、如果是嵌套定義,用若干個成員運算符,一級一級的找到最低一級的成員。如:student1.num=10000;strcpy(student1.name,"zhangsan");student1=student2;如:student1.num;;student1.birthday.month;student1.birthday.day;student1.birthday.year;8.1定義和引用(yǐnyòng)結構體變量11共二十五頁3、結構體成員變量可以像普通變量一樣使用、運算(yùnsuàn);(但是用形式不同)4、可以引用成員的地址,也可以引用結構體變量的地址如:student2.score=student1.score;sum=student1.score+student2.score;student1.age++;++student1.age;如:scanf("%d",&student1.num);(輸入的數(shù)據(jù)(shùjù)送到student1.num所在的存儲空間)8.1定義和引用結構體變量最低級成員變量為基本類型12共二十五頁結構體變量(biànliàng)的初始化和其他變量一樣,在定義結構體變量時可以賦初值8.1定義(dìngyì)和引用結構體變量例8.1#include<stdio.h>intmain(){structstudent{intnum;charname[20];charsex;charaddr[20];}a={504,"Liming",'M',"陜鼓大道123"};printf("學號:%d\n姓名:%s\n性別:%c\n住址:%s\n",a.num,,a.sex,a.addr);return0;}13共二十五頁8.2結構(jiégòu)體數(shù)組由多個相同類型的結構體變量組成的數(shù)組——結構體數(shù)組數(shù)組中每一個元素都是一個結構體類型的數(shù)據(jù)。8.2.1如何定義結構體數(shù)組與定義結構體變量相似(xiānɡsì),只需說明其為數(shù)組2、struct結構體名{成員表列}數(shù)組名[數(shù)組長度];3、struct
{成員表列}數(shù)組名[數(shù)組長度];1、struct結構體名{成員表列};struct結構體類型
數(shù)組名[數(shù)組長度];structperson{charname[20];intcount;};structpersonleader[3];structperson{charname[20];intcount;}leader[3];struct{charname[20];intcount;}leader[3];14共二十五頁初始化一般(yībān)形式:結構體類型
數(shù)組名[數(shù)組長度]={初值表列};例:8.2結構(jiégòu)體數(shù)組structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};structstudent
stu[3]={{10101,"李林",'M',18,87.5,"103北京路"},{10102,"張奇",'M',19,89,"130上海路"},{10104,"王敏",'F',17,95,"1010學院路"}};15共二十五頁結構(jiégòu)體數(shù)組在內(nèi)存中連續(xù)存放10101"李林"'M'1887.5"103北京路"10102"張奇"'M'1989"130上海路"stu[1].numstu[1].namestu[1].sexstustu+18.2結構(jiégòu)體數(shù)組引用方式16共二十五頁例8-2.有三個候選人,每個選民只能投一票選一人,要求編寫一個統(tǒng)計選票(xuǎnpiào)的程序,先輸入被選人的名字,最后輸出各人得票結果。#include<stdio.h>#include<string.h>intmain(){inti,j;charleader_name[20];
structPerson{charname[20];
intcount;}leader[3]={"Li",0,"Zhang",0,"Fan",0};for(i=1;i<=10;i++)//10個投票(tóupiào)人{scanf("%s",leader_name);for(j=0;j<3;j++)if(strcmp(leader_name,leader[j].name)==0)
leader[j].count++; }printf("\nResult:\n");for(i=0;i<3;i++)printf("%5s:%d\n",leader[i].name,leader[i].count);return0;}8.2結構體數(shù)組17共二十五頁8.3結構(jiégòu)體指針8.3.1指向結構體變量的指針指向結構體變量的指針:是該變量所占內(nèi)存段的起始地址指向結構體的指針變量既可以指向結構體變量,也可以指向結構體數(shù)組的元素;指針變量的基類型必須與結構體變量的類型相同。定義(dìngyì)形式:struct結構體名*指針名如:structstudentstu,*p=&stu;引用方式:(*p).成員名
*p兩側的括號不能省略p->成員名
等價于(*p).成員名18共二十五頁說明:為了使用方便,c語言用p->num代表(*p).num.->為指向運算符如果p指向stu,以下3種寫法等價:1、結構體變量.成員(chéngyuán)名stu.num2、(*p).成員名(*p).num3、p->成員名p->num試分析以下幾種運算:p->np指向的結構體變量中的成員n的值p->n++p指向的結構體變量中的成員n的值+1(后加)++p->n
p指向的結構體變量中的成員n的值+1(先加)8.3結構(jiégòu)體指針內(nèi)容19共二十五頁例8-5通過指向結構體變量的指針變量輸出結構體變量中成員(chéngyuán)信息#include<stdio.h>#include<string.h>intmain(){structStudent{intnum;charname[20];charsex;floatscore;}stu1={10110,"LiMing",'M',89.5},*p;p=&stu1;printf("NO.:%d\nname:%s\nsex:%c\nscore:%5.1f\n",stu1.num,,stu1.sex,stu1.score);printf("NO.:%d\nname:%s\nsex:%c\nscore:%5.1f\n",(*p).num,(*p).name,p->sex,p->score);return0;}8.3結構(jiégòu)體指針20共二十五頁8.3.2指向結構(jiégòu)體數(shù)組的指針10101"李林"'M'1887.5"103北京路"10102"張奇"'M'1989"130上海路"stu[0].namestu[0].sexp=stup+1注意:P定義為一個指向structStudent類型的指針變量,它用來(yònɡlái)指向一個structStudent類型的對象。不能用來指向stu數(shù)組元素中的某一成員。p=stu[0].name;
×8.3結構體指針stu[0].num類型不匹配21共二十五頁例8-6有3個學生的信息,放在結構體數(shù)組中,要求輸出全部學生的信息。分析:用指向結構體變量的指針(zhǐzhēn)來處理1、聲明結構體類型、定義結構體數(shù)組并完成初始化;2、定義一個指向結構體數(shù)組的指針變量p;3、使p指向結構體數(shù)組的首元素,輸出它指向元素的所有內(nèi)容;4、使p指向下一個元素,輸出內(nèi)容;5、重復4,直到所有元素內(nèi)容都被輸出。8.3結構(jiégòu)體指針22共二十五頁8.3結構(jiégòu)體指針#include<stdio.h>intmain(){structStudent{intnum;charname[20];charsex;intage;}stu[3]={{10101,"LiMing",'M',18},{10102,"WangYue",'F',
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年江蘇公務員考試行測試題(B卷)
- 2024-2025學年第13課清朝前中期的鼎盛與危機-勤徑學升高中歷史必修上同步練測(統(tǒng)編版2019)
- 2025年共同發(fā)展協(xié)議書細目
- 2025年全球化學品物流協(xié)議
- 2025年倉儲物流租賃合同文件
- 2025年四人股東策劃經(jīng)營合作協(xié)議書
- 2025年特種自行車項目立項申請報告模板
- 2025年公共服務設施建設策劃管理協(xié)議書
- 2025年肥料級磷酸氫鈣項目規(guī)劃申請報告模板
- 2025年公共環(huán)衛(wèi)設施:環(huán)衛(wèi)垃圾桶項目立項申請報告模板
- 光伏十林業(yè)可行性報告
- 小學綜合實踐《我做環(huán)保宣傳員 保護環(huán)境人人有責》
- 鋼煤斗內(nèi)襯不銹鋼板施工工法
- 公司人事招聘面試技巧培訓完整版課件兩篇
- 出國勞務派遣合同(專業(yè)版)電子版正規(guī)范本(通用版)
- 公路工程安全風險辨識與防控手冊
- 供應商評估報告范本
- 職業(yè)生涯規(guī)劃-自我認知-價值觀
- 建筑集團公司商務管理手冊(投標、合同、采購)分冊
- 威海劉公島PPT介紹課件
- 2022年廣西高考英語真題及答案(全國甲卷)
評論
0/150
提交評論