8章结构与其它自订资料型态.pptVIP

  1. 1、本文档共45页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
8章结构与其它自订资料型态

第8章 結構與其它自訂資料型態 8-1 結構 8-2 其它自訂資料型態 8-3 本章綜合練習 8-1 結構 結構為一種使用者自訂資料型態,能將一種或多種資料型態集合在一起,形成新的資料型態。 考慮描述一位學生成績資料,這時除了要記錄學號與姓名等字串資料外,還必須定義數值資料型態來記錄如英文、國文、數學等成績,此時陣列就不適合使用。 結構宣告與存取方式 宣告方式如下: struct 結構型態名稱 { 資料型態 結構成員1; 資料型態 結構成員2; …… }; 在結構定義中可以使用C的基本資料型態、陣列、指標,甚至是其它結構成員。 Student結構型態 宣告與定義方式如下: struct Student { char S_Num[10]; char Name[20]; int Chi_score; int Math_score; int Eng_score; }; Student John,; 結構變數的宣告與存取示範:CH08_1 程式範例是使用結構型態來定義Student結構,並示範如何宣告、存取結構成員與介紹結構變數間的指定運算過程。 結構指標 1.使用-符號指向結構指標的資料成員: 結構指標-結構成員名稱; 2.使用取值運算子?*?,再使用小數點?.?取得結構變數的資料成員。 (*結構指標).結構成員名稱; 結構指標資料存取方法的示範與練習:CH08_2 程式範例設定一結構為圓,並分別宣告一個結構變數及結構指標,而此結構指標指向該變數。 接著利用結構變數計算出圓面積後,再分別用兩種結構指標方式將資料顯示在螢幕上。 結構指標與運算子的存取示範與練習:CH08_3 使用結構指標來進行結構成員運算時,必須特別注意運算子的優先順序,例如-運算子的運算順序優先於++與--運算子,例如f2-a++是等於 (f2-a)++。以下的程式範例正好說明這個結果。 結構成員宣告為指標變數的存取示範:CH08_4 程式範例,是宣告圓的結構體,並設定結構成員area為指標變數,用以記錄圓面積。 這說明如果結構中的成員宣告為指標變數,則在結構變數中會利用(.)存取該指標變數;而在結構指標中會以(-)存取指標變數。 結構陣列 陣列在程式設計中使用相當頻繁,主要是用來儲存相同資料型態成員的集合,而結構的功用則可以集合不同資料型態成員,不過那可是只有一筆結構資料,如果同時要記錄多筆相同結構資料,還是得宣告一個結構陣列型態。 宣告方式如下: struct 結構名稱 結構陣列名稱[陣列長度 ]; 五個元素的student結構陣列 陣列中每個元素都各自擁有字串name與整數score成員: struct student { char name[10]; int score; }; struct student class1[5]; 結構陣列的宣告與存取練習:CH08_5 程式範例是基本的結構陣列的宣告與存取方式。不過請各位留意,第23行是個重要的觀念。 因為陣列名稱即為此陣列第一個元素的記憶體位址,所以陣列中的各個元素也可以使用指標常數運算的觀念來存取。 結構陣列中陣列成員的宣告與存取練習:CH08_6 程式範例宣告5個學生的結構陣列,其中每個學生的結構中又有成績的陣列成員,最後結果將列印與存取學生結構陣列的陣列成員元素。 結構指標陣列 結構陣列是以結構變數的方式呈現,當然也可以宣告成結構指標陣列方式,使得陣列中的每個元素,所存放的都是指標。 因為是結構指標陣列,所以不能使用*運算子或指標運算來存取結構內的資料成員。例如把第24行改為: printf(姓名:%s \t, *s2[i].name); /* 這個陳述句不合法 */ 或 printf(姓名:%s \t, (s2+i)-name); /* 這個陳述句不合法 */ 結構指標陣列中成員的宣告與存取練習:CH08_7 巢狀結構 謂巢狀結構就是在一個結構中宣告建立另一個結構。 就如同一個書包(外層結構)裡面還裝有數個資料夾(裡層結構)。如下圖所示: 巢狀結構的宣告 將裡層結構與外層結構分開宣告,其中裡層結構A宣告於一處,外層結構B則以結構A為資料型態宣告變數。 內層結構被包於外層結構之下,其中內層結構包在外層結構B之內,定義內層結構的成員時,也一併宣告變數,可省略內層結構的名稱定義。 巢狀結構grade 這個結構中,省略了內層結構student 的名稱定義,而直接使用grade結構即可: struct grade { struct { char *name; int height; int weight; } std[10];

文档评论(0)

118books + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档