- 1、本文档共43页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
结构联合和列举
第9章 自訂資料型態 – 結構、聯合和列舉 9-1 結構資料型態 9-2 結構陣列 9-3 指標與結構 9-4 動態記憶體配置 9-5 聯合與列舉資料型態 9-6 建立C語言的新型態 9-7 位元欄位 9-1 結構資料型態 9-1-1 結構的基礎 9-1-2 結構宣告與基本使用 9-1-3 巢狀結構 9-1-4 結構與函數 9-1-1 結構的基礎-說明 「結構」(Structures)是C語言的延伸資料型態,它和聯合、列舉都屬於自定資料型態(User-Defined Types),可以讓程式設計者自行在程式碼定義新的資料型態。 結構是由一或多個不同資料型態(當然也可以是相同資料型態)所組成的集合,然後使用一個新名稱來代表,新名稱是一個新的資料型態,我們可以使用此新資料型態來宣告結構變數。 9-1-1 結構的基礎-C語言的結構 C語言的結構如同資料庫的記錄,可以將複雜且相關的資料組合成一個記錄來方便存取。例如:圖形的點是由X軸和Y軸的座標(x, y)所組成,如下所示: struct point { int x; int y; }; 結構point可以代表圖形上的一個點的座標(x, y),當圖形是由數十到百點組成時,使用結構處理時,就能夠清楚分別哪一個x值是搭配哪一個y值的座標。 9-1-2 結構宣告與基本使用-語法 在C程式宣告結構是使用struct關鍵字來定義新的資料型態,其語法如下所示: struct 結構名稱 { 資料型態 變數1; 資料型態 變數2; …… }; 語法定義名為【結構名稱】的新資料型態,程式設計者可以使用C語言的命名原則替結構命名,在結構中宣告的變數稱為該結構的「成員」(Members)。 9-1-2 結構宣告與基本使用-範例 例如:宣告學生資料的student結構,如下所示: struct student { int stdId; char name[20]; int mathScore; int englishScore; }; 上述結構是由學號stdId、學生姓名name[]字元陣列的字串、數學成績mathScore和英文成績englishScore成員變數組成。 9-1-2 結構宣告與基本使用-宣告結構變數與初始值(說明) 當宣告student結構後,因為結構是一種自訂型態,換句話說,我們就可以在程式碼使用新型態來宣告變數,其語法如下所示: struct 結構名稱 變數名稱; 上述宣告使用struct關鍵字(C語言一定需要struct)開頭加上結構名稱來宣告結構變數,以student結構為例的結構變數宣告,如下所示: struct student std1; struct student std2 = { 9402, 小龍女, 65, 88 }; struct student std3; 9-1-2 結構宣告與基本使用-宣告結構變數與初始值(圖例) 例如:結構變數std2在「=」等號之後使用大括號括起的內容依序是成員變數的初始值,如下圖所示: 9-1-2 結構宣告與基本使用-結構與成員變數的運算 在建立好結構變數後,就可以使用「.」運算子存取結構成員變數的值,如下所示: std1.stdId = 9401; strcpy(std1.name, 楊過); std1.mathScore = 90; std1.englishScore = 77; 上述程式碼存取結構的成員變數,因為name是字串,所以使用strcpy()函數來指定成員變數值。ANSI-C語言支援結構變數的指定敘述,如下所示: std3 = std2; 9-1-3 巢狀結構-說明 「巢狀結構」(Nested Structures)是在宣告的結構中擁有其他結構,如下所示: struct quiz { int mathScore; int englishScore; }; struct student { int stdId; char name[20]; struct quiz score; }; 9-1-3 巢狀結構-存取結構變數 我們可以在宣告student結構變數時,指定結構的初值,如下所示: struct student std2 = {9402, 小龍女, {65, 88}}; 因為score是student結構的成員變數,所以在存取score結構的成員變數時,需要先存取結構變數score,然後才能存取成員變數mathScore和englishScore,如下所示: std1.score.math = 90; std
文档评论(0)