語言實(shí)驗(yàn)課件么噠講結(jié)構(gòu)體_第1頁
語言實(shí)驗(yàn)課件么噠講結(jié)構(gòu)體_第2頁
語言實(shí)驗(yàn)課件么噠講結(jié)構(gòu)體_第3頁
語言實(shí)驗(yàn)課件么噠講結(jié)構(gòu)體_第4頁
語言實(shí)驗(yàn)課件么噠講結(jié)構(gòu)體_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第九章結(jié)構(gòu)體學(xué)習(xí)目標(biāo)理解結(jié)構(gòu)體的概念掌握結(jié)構(gòu)體類型和結(jié)構(gòu)體變量的差別掌握引用結(jié)構(gòu)體成員運(yùn)算符“.”和“->”掌握結(jié)構(gòu)體數(shù)組、結(jié)構(gòu)體指針23

處理一個(gè)學(xué)生的信息,包括:

學(xué)號(hào)、姓名、性別、年齡、成績(jī)、地址 按照以往定義變量的方式,我們可以這樣定義: intnum; charname[20]; charsex; intage; floatscore; charaddr[50];這些變量相互獨(dú)立,很難反映出它們的內(nèi)在聯(lián)系struct

student{

};結(jié)構(gòu)體(構(gòu)造類型)問題提出9.1結(jié)構(gòu)體結(jié)構(gòu)體是一種構(gòu)造數(shù)據(jù)類型用途:把不同類型的數(shù)據(jù)組合成一個(gè)整體——

自定義數(shù)據(jù)類型結(jié)構(gòu)體類型定義struct[結(jié)構(gòu)體名]{

類型標(biāo)識(shí)符成員名;類型標(biāo)識(shí)符成員名;

……};成員類型可以是基本型或構(gòu)造型struct是關(guān)鍵字,不能省略合法標(biāo)識(shí)符可省:無名結(jié)構(gòu)體學(xué)生信息學(xué)號(hào):intnum;姓名:charname[20];性別:charsex;年齡:intage;成績(jī):floatscore;地址:charaddr[30];例structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};結(jié)構(gòu)體類型定義描述結(jié)構(gòu)的組織形式,不分配內(nèi)存結(jié)構(gòu)體變量的定義先定義結(jié)構(gòu)體類型,再定義結(jié)構(gòu)體變量一般形式:struct

結(jié)構(gòu)體名{

類型標(biāo)識(shí)符成員名;類型標(biāo)識(shí)符成員名;

……};struct結(jié)構(gòu)體名變量名表列;structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};structstudentstu1,stu2;namenumsexagescoreaddr4字節(jié)4字節(jié)20字節(jié)1字節(jié)4字節(jié)30字節(jié)………

一般形式:struct

結(jié)構(gòu)體名{

類型標(biāo)識(shí)符成員名;類型標(biāo)識(shí)符成員名;

……}變量名表列;例

structstudent{intnum;charname[20];charsex;int

age;floatscore;char

addr[30];}stu1,stu2;定義結(jié)構(gòu)體類型的同時(shí)定義結(jié)構(gòu)體變量struct{

類型標(biāo)識(shí)符成員名;類型標(biāo)識(shí)符成員名;

…………….}變量名表列;例

struct{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}stu1,stu2;用無名結(jié)構(gòu)體直接定義變量只能一次一般形式:直接定義結(jié)構(gòu)體變量

說明結(jié)構(gòu)體類型與結(jié)構(gòu)體變量概念不同類型:不分配內(nèi)存;變量:分配內(nèi)存類型:不能賦值、存取、運(yùn)算;變量:可以結(jié)構(gòu)體可嵌套結(jié)構(gòu)體變量的初始化形式一:struct

結(jié)構(gòu)體名{

類型標(biāo)識(shí)符成員名;類型標(biāo)識(shí)符成員名;

…………….};struct結(jié)構(gòu)體名結(jié)構(gòu)體變量={初始數(shù)據(jù)};

structstudent

{

int

num;

charname[20];

char

sex;

int

age;

char

addr[30];

};

structstudentstu1={112,“WangLin”,‘M’,19,“20BeijingRoad”};例struct

結(jié)構(gòu)體名{

類型標(biāo)識(shí)符成員名;類型標(biāo)識(shí)符成員名;

…………….}結(jié)構(gòu)體變量={初始數(shù)據(jù)};structstudent{intnum;charname[20];charsex;intage;charaddr[30];}stu1={112,“WangLin”,‘M’,19,“200BeijingRoad”};例形式二:struct{

類型標(biāo)識(shí)符成員名;類型標(biāo)識(shí)符成員名;

…………….}結(jié)構(gòu)體變量={初始數(shù)據(jù)};例struct{intnum;charname[20];charsex;intage;charaddr[30];}stu1={112,“WangLin”,‘M’,19,“200BeijingRoad”};形式三:結(jié)構(gòu)體可嵌套例

structdate{intmonth;intday;intyear;};structstudent{intnum;charname[20];

structdatebirthday;}stu;numnamebirthdaymonthdayyear結(jié)構(gòu)體成員名與程序中變量名可相同,不會(huì)混淆例

structstudent{intnum;charname[20];

structdate{intmonth;intday;intyear;}birthday;}stu;numnamebirthdaymonthdayyear例main()

{structstudent{intnum;charname[20];}stu;

intnum;num=0;

stu.num=1;……}結(jié)構(gòu)體變量的引用引用規(guī)則結(jié)構(gòu)體變量不能整體引用,只能引用變量成員引用方式:結(jié)構(gòu)體變量名.成員名可以將一個(gè)結(jié)構(gòu)體變量賦值給另一個(gè)結(jié)構(gòu)體變量結(jié)構(gòu)體嵌套時(shí)逐級(jí)引用例

structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}stu1,stu2;stu1={101,“WanLin”,‘M’,19,87.5,“DaLian”};printf(“%d,%s,%c,%d,%f,%s\n”,stu1);錯(cuò)

structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}stu1,stu2;stu1.num=10;stu1.score=85.5;stu1.score+=stu2.score;stu1.age++;例

structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}

stu1,

stu2;stu2=stu1;例

structstudent{intnum;charname[20];structdate{intmonth;intday;intyear;}birthday;}stu1,stu2;stu1.birthday.month=12;結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組的定義三種形式:形式一:

structstudent{intnum;charname[20];charsex;intage;};structstudentstu[2];形式二:structstudent{intnum;charname[20];charsex;intage;}stu[2];形式三:struct{intnum;charname[20];charsex;intage;}stu[2];numnamesexagenumnamesexagestu[0]stu[1]25B結(jié)構(gòu)體數(shù)組初始化

順序初始化分行初始化

結(jié)構(gòu)體數(shù)組引用引用方式:結(jié)構(gòu)體數(shù)組名[下標(biāo)].成員名順序初始化:structstudent{intnum;charname[20];charsex;intage;};structstudentstu[3]={100,“WangLin”,‘M’,20,101,“LiGang”,‘M’,19,110,“LiuYan”,‘F’,19};分行初始化:structstudent{intnum;charname[20];charsex;intage;};structstudentstu[]={{100,“WangLin”,‘M’,20},{101,“LiGang”,‘M’,19},{110,“LiuYan”,‘F’,19}};全部初始化時(shí)維數(shù)可省structstudent{intnum;charname[20];charsex;intage;}stu[3];stu[1].age++;strcpy(stu[0].name,”ZhaoDa”);重要!structperson{charname[20];intcount;}leader[3]={“Li”,0,“Zhang”,0,”Wang“,0};main(){inti,j;charleader_name[20];

for(i=0;i<10;i++){scanf("%s",leader_name);

for(j=0;j<3;j++)if(strcmp(leader_name,leader[j].name)==0) leader[j].count++;}for(i=0;i<3;i++)printf("%s:%d\n",leader[i].name,leader[i].count);}namecountLiZhangWang000例:統(tǒng)計(jì)候選人的選票Li

Zhang

Wang

Li

Wang

Li

Li

Zhang

Li

Wang

Li:5Zhang:2Wang:3結(jié)構(gòu)體和指針指向結(jié)構(gòu)體變量的指針定義形式:struct結(jié)構(gòu)體名*結(jié)構(gòu)體指針名;使用結(jié)構(gòu)體指針變量引用成員形式存放結(jié)構(gòu)體變量在內(nèi)存的起始地址(*結(jié)構(gòu)體指針名).成員名

結(jié)構(gòu)體指針名->成員名

結(jié)構(gòu)體變量名.成員名指向運(yùn)算符優(yōu)先級(jí):1結(jié)合方向:從左向右structstudentstu1;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論