資源描述:
《結(jié)構(gòu)體與共用體》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第12章結(jié)構(gòu)體與共用體C語言程序設(shè)計內(nèi)容提要結(jié)構(gòu)體類型與結(jié)構(gòu)體變量結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組做函數(shù)參數(shù)結(jié)構(gòu)體指針結(jié)構(gòu)體指針做函數(shù)參數(shù)共用體問題的提出對數(shù)據(jù)類型的回顧:inta;floatb;charc;以上三種類型是系統(tǒng)已經(jīng)定義好的數(shù)據(jù)類型,其特性不能被用戶改變。學(xué)號姓名性別年齡成績家庭住址100310121王剛男1898.5北京100310122李曉銘男1978成都100310123王麗紅女2089南京100310124陳莉女1877上海問題:在程序中如何表示以下表格中的信息?例如1:structstudent{intnum;charname[2
2、0];charsex;intage;floatscore;charaddr[30];};⒉結(jié)構(gòu)體類型的聲明struct結(jié)構(gòu)體名{成員表列};成員的聲明:類型名成員名;⒈結(jié)構(gòu)體類型的引入例如2:structbirthday{intmonth;intday;intyear;};⒉結(jié)構(gòu)體類型的聲明struct結(jié)構(gòu)體名{成員表列};成員的聲明:類型名成員名;定義結(jié)構(gòu)體類型變量的方法⒈先聲明結(jié)構(gòu)體類型再定義變量名例如:structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr
3、[30];};structstudentstudent1;變量定義方法的回顧:inta;a=3;floatb;b=3.5;charc;c=‘a(chǎn)’;10010LiFunM1887.5Beijingnumnamesexagescoreaddrstudent1:⒉在聲明類型的同時定義變量一般形式:struct結(jié)構(gòu)體名{成員表列}變量名表列;例如:structbirthday{intmonth;intday;intyear;}tom;⒊ 直接定義結(jié)構(gòu)體類型變量一般形式:struct{成員表列}變量名表列;例如:struct{intmonth;intd
4、ay;intyear;}tom,peter;4.結(jié)構(gòu)體類型的成員也可以是一個結(jié)構(gòu)體變量。例如:structdate{intmonth;intday;intyear;};structstudent{intnum;charname[20];charsex;intage;structdatebirthday;charaddr[30];};structstudentstudent1;numnamesexagebirthdaymonthdayyearaddr結(jié)構(gòu)體變量的初始化#includestructdate{intmonth;in
5、tday;intyear;};intmain(void){structstudent{charname[20];charsex;structdatebirthday;}a={“Mary”,'F',10,23,1985};printf("name:%ssex:%cbirthday:%d%d%d",a.name,a.sex,a.birthday.month,a.birthday.day,a.birthday.year);return0;}回顧:對整型變量的初始化inta=3;MaryFbirthday10231985從鍵盤輸入給結(jié)構(gòu)體
6、變量賦值#includestructdate{intmonth;intday;intyear;};intmain(void){structstudent{charname[20];charsex;structdatebirthday;}a;printf("input:");scanf("%s%c%d%d%d",a.name,&a.sex,&a.birthday.month,&a.birthday.day,&a.birthday.year);printf("name:%ssex:%cbirthday:%d%d%d"
7、,a.name,a.sex,a.birthday.month,a.birthday.day,a.birthday.year);return0;}結(jié)構(gòu)體變量的引用引用結(jié)構(gòu)體變量需遵守的規(guī)則:⑴不能將一個結(jié)構(gòu)體變量作為一個整體輸入輸出,只能對結(jié)構(gòu)體變量中的各個成員分別進(jìn)行輸入和輸出。引用結(jié)構(gòu)體變量中成員的方式:結(jié)構(gòu)體變量名.成員名例如:printf(“name:%ssex:%cbirthday:%d%d%d”,a);錯!a.sex=‘m’;正確!a.birthday.year=1988;⑵如果成員本身又屬于一個結(jié)構(gòu)體類型,則要用若干個
8、成員運算符,一級一級地找到最低一級的成員。只能對最低級的成員進(jìn)行賦值或存取以及運算。例如:a.birthday.year=1980a.birthday.day=23