C語言程序設(shè)計(jì) 教學(xué)課件 作者 劉明才 第9章 結(jié)構(gòu)體與共用體.ppt

C語言程序設(shè)計(jì) 教學(xué)課件 作者 劉明才 第9章 結(jié)構(gòu)體與共用體.ppt

ID:50350948

大小:519.00 KB

頁數(shù):93頁

時(shí)間:2020-03-08

C語言程序設(shè)計(jì) 教學(xué)課件 作者 劉明才 第9章 結(jié)構(gòu)體與共用體.ppt_第1頁
C語言程序設(shè)計(jì) 教學(xué)課件 作者 劉明才 第9章 結(jié)構(gòu)體與共用體.ppt_第2頁
C語言程序設(shè)計(jì) 教學(xué)課件 作者 劉明才 第9章 結(jié)構(gòu)體與共用體.ppt_第3頁
C語言程序設(shè)計(jì) 教學(xué)課件 作者 劉明才 第9章 結(jié)構(gòu)體與共用體.ppt_第4頁
C語言程序設(shè)計(jì) 教學(xué)課件 作者 劉明才 第9章 結(jié)構(gòu)體與共用體.ppt_第5頁
資源描述:

《C語言程序設(shè)計(jì) 教學(xué)課件 作者 劉明才 第9章 結(jié)構(gòu)體與共用體.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、第9章結(jié)構(gòu)體與共用體結(jié)構(gòu)體類型的定義結(jié)構(gòu)體類型變量結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體和指針結(jié)構(gòu)體和函數(shù)鏈表共用體枚舉用typedef定義類型第頁共93頁9.1結(jié)構(gòu)體類型的定義結(jié)構(gòu)體由若干成員組成,各成員可以是不同的類型。在程序中使用結(jié)構(gòu)體類型,必須先對(duì)結(jié)構(gòu)體的組成進(jìn)行描述(定義)。例如,學(xué)生信息可用結(jié)構(gòu)體定義為:structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};第頁共93頁其中,關(guān)鍵字struct是結(jié)構(gòu)體類型的標(biāo)志。struct之后的student是結(jié)構(gòu)體名,用花括號(hào)括起來的是各個(gè)成員的描述(定義)。上例定義的

2、結(jié)構(gòu)體類型structstudent有6個(gè)成員,分別為num、name、sex、age、score和addr。這6個(gè)成員分別表示學(xué)生的學(xué)號(hào)、姓名、性別、年齡、成績和家庭住址,顯然它們的類型是不同的。第頁共93頁結(jié)構(gòu)體類型定義的一般形式為:struct結(jié)構(gòu)體名{成員表列};其中struct是關(guān)鍵字,結(jié)構(gòu)體名用合法的標(biāo)識(shí)符表示,成員表列的說明形式為:類型名成員名;第頁共93頁結(jié)構(gòu)體類型定義要注意以下幾點(diǎn)。結(jié)構(gòu)體類型定義只是指定了一種類型(同系統(tǒng)已定義的基本類型,如int、float、char等一樣),無具體的數(shù)據(jù),系統(tǒng)不分配實(shí)際內(nèi)存單元。結(jié)構(gòu)體類型的成員可以是任何基本數(shù)據(jù)類型、數(shù)組、指針等,而且

3、可以是已定義的結(jié)構(gòu)體類型。第頁共93頁例如,以下定義一個(gè)表示日期的結(jié)構(gòu)體類型:structdate{intyear;intmonth;intday;};以下定義一個(gè)表示學(xué)生信息的結(jié)構(gòu)體類型:structstu{intnum;charname[20];charsex;structdatebirthday;/*成員birthday為結(jié)構(gòu)體類型structdate*/floatscore[3];charaddr[30];};第頁共93頁9.2結(jié)構(gòu)體類型變量結(jié)構(gòu)體類型變量的定義結(jié)構(gòu)體變量的引用第頁共93頁9.2.1結(jié)構(gòu)體類型變量的定義先定義結(jié)構(gòu)體類型,再定義變量這種定義方法的一般形式為:struct

4、結(jié)構(gòu)體名{成員表};struct結(jié)構(gòu)體名變量名表列;如前面已定義了一個(gè)結(jié)構(gòu)體類型structstu,可以用它來定義變量。例如:structstus1,s2;第頁共93頁定義s1和s2為structstu類型的變量,即它們是具有structstu類型的結(jié)構(gòu)體變量。定義結(jié)構(gòu)體變量后,系統(tǒng)為它們分配內(nèi)存單元。系統(tǒng)為結(jié)構(gòu)體變量分配的內(nèi)存單元是連續(xù)的,一個(gè)結(jié)構(gòu)體變量所占的內(nèi)存空間為它的各成員所占字節(jié)數(shù)之和。例如,以上結(jié)構(gòu)體變量s1的內(nèi)存空間分配,如圖所示。第頁共93頁結(jié)構(gòu)體變量s1的內(nèi)存空間分配第頁共93頁可以用sizeof(變量)或sizeof(類型標(biāo)識(shí)符)求出該變量或該種類型的變量所占的存儲(chǔ)空間的

5、字節(jié)數(shù)。例如表達(dá)式“sizeof(s1)”或“sizeof(structstu)”的值為71(按TurboC標(biāo)準(zhǔn))。第頁共93頁在定義結(jié)構(gòu)體類型的同時(shí)定義變量這種定義方法的一般形式為:struct結(jié)構(gòu)體名{成員表}變量名表列;例如:structst{intnum;charname[20];floatscore;}s1,s2;它在定義了結(jié)構(gòu)體類型structst的同時(shí)定義了兩個(gè)該類型的變量s1和s2。第頁共93頁直接定義結(jié)構(gòu)體類型變量這種定義方法的一般形式為:struct{成員表}變量名表列;例如:struct{intnum;charname[20];floatscore;}s1,s2;即在結(jié)

6、構(gòu)體定義時(shí)不出現(xiàn)結(jié)構(gòu)體類型名,這種形式雖然簡單,但不能在再需要時(shí),使用定義的結(jié)構(gòu)體類型。建議讀者使用前兩種方法定義結(jié)構(gòu)體類型變量。第頁共93頁9.2.2結(jié)構(gòu)體變量的引用在對(duì)結(jié)構(gòu)體變量引用時(shí),一般只能對(duì)其成員進(jìn)行直接操作,而不能對(duì)結(jié)構(gòu)體變量整體進(jìn)行操作。引用結(jié)構(gòu)體變量成員的一般形式為:結(jié)構(gòu)體變量名.成員名運(yùn)算符“.”為成員運(yùn)算符,其結(jié)合性是自左至右。例如:structdate{intyear;intmonth;intday;}structexample{intnum;charname[20];structdatebir;}s1,s2;第頁共93頁各成員的引用形式如下:s1.num=101;s2

7、.num=s1.num+1;strcpy(s1.name,"wang");如果成員本身又屬于一個(gè)結(jié)構(gòu)體類型,則要用若干個(gè)成員運(yùn)算符,一級(jí)一級(jí)地找到最低一級(jí)的成員。例如:s1.bir.year=1985;結(jié)構(gòu)體變量和其他變量一樣,可以在定義變量的同時(shí)進(jìn)行初始化。第頁共93頁結(jié)構(gòu)體變量初始化的一般形式如下:結(jié)構(gòu)體類型結(jié)構(gòu)體變量名={初始值表};例如:structstudent{charname[10];float

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。