資源描述:
《C語言復(fù)習(xí)4----結(jié)構(gòu)體.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、C語言復(fù)習(xí)4----結(jié)構(gòu)體結(jié)構(gòu)體類型概述前面章節(jié)學(xué)過的數(shù)組是一組同類型數(shù)據(jù)的集合。一個(gè)數(shù)組只能存放同一種類型的數(shù)據(jù),不同類型的數(shù)據(jù)不能放在一個(gè)數(shù)組。而結(jié)構(gòu)體由不同的數(shù)據(jù)類型組成,例如學(xué)生的姓名、學(xué)生證號、年齡、手機(jī)號碼等,這就需要結(jié)構(gòu)體數(shù)據(jù)類型。結(jié)構(gòu)體不是一種新的數(shù)據(jù)類型,而是把其它不同的數(shù)據(jù)類型組合起來,是由其它類型構(gòu)造出來,因此稱為構(gòu)造類型。1)結(jié)構(gòu)體由若干個(gè)數(shù)據(jù)項(xiàng)組成,每個(gè)數(shù)據(jù)項(xiàng)稱為結(jié)構(gòu)體的一個(gè)成員,每個(gè)數(shù)據(jù)項(xiàng)屬于一種已有的數(shù)據(jù)類型。2)結(jié)構(gòu)體類型是由不同類型的數(shù)據(jù)項(xiàng)組成的復(fù)合類型。結(jié)構(gòu)體類型的定義格式:struct結(jié)構(gòu)體類型名{數(shù)據(jù)類型1成員1名;數(shù)據(jù)類型2成員2名
2、;...數(shù)據(jù)類型n成員n名;};結(jié)構(gòu)體類型成員列表定義一個(gè)學(xué)生的結(jié)構(gòu)體例如定義一個(gè)學(xué)生的結(jié)構(gòu)體:structstudent{intnumber;charname[15];charsex;intage;}成員又稱為成員變量,是結(jié)構(gòu)體中若干個(gè)數(shù)據(jù)類型,每個(gè)成員須標(biāo)明數(shù)據(jù)類型。結(jié)構(gòu)體類型的嵌套結(jié)構(gòu)體成員可以是任意的數(shù)據(jù)類型,還可以是其它的結(jié)構(gòu)體類型,這時(shí)稱為結(jié)構(gòu)體類型的嵌套。structdate{intyear;intmonth;intday;};structperson{intnumber;charname[20];charsex;structdatebirthday;};結(jié)構(gòu)
3、體變量的定義在定義了結(jié)構(gòu)體之后,結(jié)構(gòu)體變量可以用三種方式定義。方式1:先聲明結(jié)構(gòu)體類型,再定義變量名,分別定義。structstudent{intnumber;charname[15];charsex;intage;}用上面定義的結(jié)構(gòu)體structstudent來定義結(jié)構(gòu)體變量structstudentstu1,stu2;定義了stu1和stu2為structstudent類型的變量。定義結(jié)構(gòu)體變量之后,C系統(tǒng)就為它們分配內(nèi)存單元。方式2:結(jié)構(gòu)體類型和結(jié)構(gòu)體變量名一起定義structstudent{intnumber;charname[15];charsex;intage;
4、}stu1,stu2;方式3:省略結(jié)構(gòu)體類型名,直接定義結(jié)構(gòu)體變量struct{intnumber;charname[15];charsex;intage;}stu1,stu2;結(jié)構(gòu)體變量的初始化定義了結(jié)構(gòu)體變量之后,就可對變量賦值或存取。對于結(jié)構(gòu)體和結(jié)構(gòu)體變量名分別定義,可以這樣來初始化:structstudentstu1={001,'david','M',25,};結(jié)構(gòu)體和結(jié)構(gòu)體變量名一起定義,可以這樣來初始化:structstudent{intnumber;charname[15];charsex;intage;}stu1={001,'david','M',25,};
5、結(jié)構(gòu)體變量的引用定義了結(jié)構(gòu)體變量之后,就可以在程序中引用它了。能夠引用的對象有兩個(gè):結(jié)構(gòu)體變量名代表變量整體,成員名代表變量的各個(gè)成員。引用時(shí)注意:1)不能將一個(gè)結(jié)構(gòu)體變量作為一個(gè)整體進(jìn)行輸入和輸出,如:printf("%d,%s,%c,%d",stu1)--------錯(cuò)誤只能對結(jié)構(gòu)體的成員變量輸入輸出。引用結(jié)構(gòu)體變量中的成員變量的方式為:結(jié)構(gòu)體變量名.成員變量如:stu1.name成員本身又是一個(gè)結(jié)構(gòu)體structdate{intyear;intmonth;intday;};strcutstu{intnumber;charname[15];charsex;struc
6、tdatebirthday;/*成員本身又是一個(gè)結(jié)構(gòu)體*/}student;2)如果成員本身又是一個(gè)結(jié)構(gòu)體,要一級一級找到最低的成員變量,只能對最低的成員進(jìn)行賦值或運(yùn)算??梢赃@樣來引用:student.birthday.month3)結(jié)構(gòu)體變量可以整體賦值。例如stu1=stu2,把變量stu2的所有成員的值一一賦值給變量stu1,但是這兩個(gè)結(jié)構(gòu)體變量的類型必須完全相同。4)結(jié)構(gòu)體變量占據(jù)的一段內(nèi)存的首地址稱為該結(jié)構(gòu)體變量的地址,其每個(gè)成員占據(jù)的若干個(gè)單元的首地址稱為該成員的地址。結(jié)構(gòu)體數(shù)組以上定義的存放學(xué)生信息的結(jié)構(gòu)體類型structstudent,可以定義1個(gè)變量stu
7、,但是只能存放stu的1個(gè)學(xué)生的信息。如果為了能放10個(gè)學(xué)生信息就要定義10個(gè)結(jié)構(gòu)體變量,不現(xiàn)實(shí)。為了處理多個(gè)學(xué)生信息,就要用到結(jié)構(gòu)體數(shù)組。對于結(jié)構(gòu)體數(shù)組來說,其中每一個(gè)單元都是一個(gè)結(jié)構(gòu)體類型的數(shù)據(jù)。結(jié)構(gòu)體數(shù)組的定義結(jié)構(gòu)體數(shù)組的定義也可以采用以下3種方式之一:1)定義結(jié)構(gòu)體類型,然后通過結(jié)構(gòu)體類型來定義結(jié)構(gòu)體數(shù)組structstu{longnum;charname[10];charsex;intage;};structstustudents[20]這里結(jié)構(gòu)體數(shù)組students有20個(gè)單元,每一個(gè)單元都是一個(gè)str