資源描述:
《結(jié)構(gòu)體與共用體》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、第八章結(jié)構(gòu)體與共用體【教學(xué)要求】1.理解結(jié)構(gòu)體的含義。2.掌握結(jié)構(gòu)體類型變量的定義方法。3.掌握結(jié)構(gòu)體類型變量的引用方法。4.掌握結(jié)構(gòu)體類型變量如何在定義的同時(shí)初始化。5.理解共同體的含義,掌握共同體類型變量的定義方法。6.了解結(jié)構(gòu)體數(shù)組的定義和數(shù)組元素的引用。7.了解指向結(jié)構(gòu)體類型數(shù)據(jù)的指針的概念及使用。8.了解鏈表結(jié)點(diǎn)的結(jié)構(gòu)形式,鏈表的基本操作。9.了解枚舉類型的定義,及枚舉類型的輸入輸出。10.了解TYPEDEF的作用。第八章結(jié)構(gòu)體與共用體結(jié)構(gòu)體(struct)共同體(union)結(jié)構(gòu)體與共用體小結(jié)枚舉類型(enum)typedef定義類型結(jié)構(gòu)體(struct)結(jié)構(gòu)體的概
2、念結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體指針結(jié)構(gòu)體的概念結(jié)構(gòu)體的定義結(jié)構(gòu)體變量的存儲(chǔ)特點(diǎn)結(jié)構(gòu)體變量的引用結(jié)構(gòu)體的初始化結(jié)構(gòu)體的定義1、含義:不同類型數(shù)據(jù)的集合。2、功能:用于描述一個(gè)“概念”。(或記錄)如:numnamesexagescoreaddr10010LiFunM1887.5BeiJing3、定義方法:方法一:在定義結(jié)構(gòu)體類型的同時(shí),直接給出結(jié)構(gòu)體變量。如:struct結(jié)構(gòu)體名{結(jié)構(gòu)體成員變量的定義;}變量名1,變量名2,...,變量名n;方法二:先給出結(jié)構(gòu)體類型的定義,再定義結(jié)構(gòu)體變量。如:struct結(jié)構(gòu)體名{結(jié)構(gòu)體成員變量的定義;例:};struct結(jié)構(gòu)體名變量名1,變量名2,...,
3、變量名n;4、要點(diǎn):方法二:structstudent{intnumber;charname[20];charsex;intage;floatscore;charaddr[30];};structstudentstudent1,student2;方法一:structstudent{intnumber;charname[20];charsex;intage;floatscore;charaddr[30];}student1,student2;請(qǐng)注意兩種方法的不同特點(diǎn):1、“;”的用法;2、方法二可以用一個(gè)*.h文件來存儲(chǔ)結(jié)構(gòu)體的定義。4、要點(diǎn):結(jié)構(gòu)體名(struct):用于標(biāo)識(shí)一
4、種新的數(shù)據(jù)類型,即結(jié)構(gòu)體類型,可以省略。注意區(qū)分結(jié)構(gòu)體類型與基本數(shù)據(jù)類型的不同,它是復(fù)合數(shù)據(jù)類型。結(jié)構(gòu)體成員變量與普通變量的定義一樣,它還可以是結(jié)構(gòu)體變量。structdate{intmonth,day,year;};structstudent{intnum;charname[20];charsex;intage;structdatebirthday;charaddr[30];}student1,student2;結(jié)構(gòu)體變量的存儲(chǔ)特點(diǎn)如:structstudent{intnumber;charname[5];charsex;intage;floatscore;charaddr[
5、10];}student1,student2;structstudent所占存儲(chǔ)空間的大小為:各成員變量所占存儲(chǔ)單元字節(jié)數(shù)之和。sizeof(student)student1.numberstudent1.name[0]...student1.name[4]student1.sexstudent1.agestudent1.scorestudent1.addr[0]...student1.addr[9]student2.numberstudent2.name[0]...student2.name[4]student2.sex...student1student2結(jié)構(gòu)體類型變量的引
6、用一、原則:通過結(jié)構(gòu)體的成員來引用結(jié)構(gòu)體變量。二、成員的引用方法為:結(jié)構(gòu)體變量名.成員名三、要點(diǎn):1.結(jié)構(gòu)體變量不能整體輸入輸出,只能對(duì)它的成員進(jìn)行操作.如:student1.num;2.如果成員本身又是一個(gè)結(jié)構(gòu)體類型,則要使用若干個(gè)成員運(yùn)算符,逐級(jí)找到最底層的成員.如:student1.birthday.day3.成員變量可以象一般的變量一樣進(jìn)行各種運(yùn)算,只是在運(yùn)算時(shí)要加上“.”運(yùn)算符.4.可以引用成員的地址.結(jié)構(gòu)體變量的初始化一、只可以給主函數(shù)中或外部存儲(chǔ)類別和靜態(tài)存儲(chǔ)類別的結(jié)構(gòu)體變量、數(shù)組賦初值。1、對(duì)外部存儲(chǔ)類型的初始化.2、對(duì)靜態(tài)存儲(chǔ)類型的結(jié)構(gòu)體變量進(jìn)行初始化二、給結(jié)
7、構(gòu)體變量賦初值不能跨越前面的成員而只給后面的成員變量賦值。例exp8_1:對(duì)外部存儲(chǔ)類型的初始化.structstudent{longnumber;charname[20];charsex;intage;floatscore;charaddr[30];}a={99641,”LiPing”,’M’,”56TianjinStreet”};main(){printf(“No.:%ldname:%ssex:%caddress:%s”,a.num,a.name,a.sex,a.addr